Returns a copy of this namespace.

        Note: we truly create a copy of the dictionary but keep
              _macros and _blocks.

def copy(self):
        '''Returns a copy of this namespace.

        Note: we truly create a copy of the dictionary but keep
              _macros and _blocks.
        '''
        return Namespace(self.dictionary.copy(), self._macros, self._blocks)