merging dev branch

- adding supports for some useful plugins (Credentials, Token Macro)
- eliminating some code smell
- merging in work from other contributors
- breaking out authentication component into its own class