Initializeable

For issue #24 
The base class should never support `**kwargs` because it means that the instantiation any derived class could silently fail when people pass the wrong keyword arguments.