Register :attr:`obj` as :attr:`name` in :attr:`namespace`

        Parameters
        ----------
        name : string
            A name of the object entry
        obj : instance
            A python object which will be registered
        namespace : string, optional
            A period separated namespace. E.g. `foo.bar.hogehoge`

        Examples
        --------
        >>> registry = Registry()
        >>> registry.register('hello', 'goodbye')
        >>> registry.raw.hello == 'goodbye'
        True
        >>> registry.register('foo', 'bar', 'hoge.hoge.hoge')
        >>> isinstance(registry.raw.hoge, Bunch)
        True
        >>> isinstance(registry.raw.hoge.hoge, Bunch)
        True
        >>> isinstance(registry.raw.hoge.hoge.hoge, Bunch)
        True
        >>> registry.raw.hoge.hoge.hoge.foo == 'bar'
        True
        >>> registry.register('hoge.hoge.foobar', 'foobar')
        >>> registry.raw.hoge.hoge.hoge.foo == 'bar'
        True
        >>> registry.raw.hoge.hoge.foobar == 'foobar'
        True

def register(self, name, obj, namespace=None):
        """
        Register :attr:`obj` as :attr:`name` in :attr:`namespace`

        Parameters
        ----------
        name : string
            A name of the object entry
        obj : instance
            A python object which will be registered
        namespace : string, optional
            A period separated namespace. E.g. `foo.bar.hogehoge`

        Examples
        --------
        >>> registry = Registry()
        >>> registry.register('hello', 'goodbye')
        >>> registry.raw.hello == 'goodbye'
        True
        >>> registry.register('foo', 'bar', 'hoge.hoge.hoge')
        >>> isinstance(registry.raw.hoge, Bunch)
        True
        >>> isinstance(registry.raw.hoge.hoge, Bunch)
        True
        >>> isinstance(registry.raw.hoge.hoge.hoge, Bunch)
        True
        >>> registry.raw.hoge.hoge.hoge.foo == 'bar'
        True
        >>> registry.register('hoge.hoge.foobar', 'foobar')
        >>> registry.raw.hoge.hoge.hoge.foo == 'bar'
        True
        >>> registry.raw.hoge.hoge.foobar == 'foobar'
        True

        """
        if "." in name:
            namespace, name = name.rsplit(".", 1)
        caret = self.raw
        if namespace:
            for term in namespace.split('.'):
                if term not in caret:
                    caret[term] = Bunch()
                caret = caret[term]
        caret[name] = obj