Added NewController support in Python lib

Added the NewController to the `controller` module. Also moved a few methods and arguments around, reducing the subclassing requirements and enabling better ways to override the defaults that are used.