getPermission is now fussy about its parameters
Implemented basic param type in constructors and providers.
Custom Exceptions for each Class.
New default Role is 'guest', can be overridden after initialization.