Refactor core module to make better use of metaclasses.
Merge helper functions into new core.
Update all unit tests for new metaclass format.
Add method argument type checking.
Method arguments will never be 'None'.
Add typed parameter support.
Add unit tests for typed parameters.
Update README documentation.
Fix some README documentation formatting.