Major Refactor

Payments is now a constructor, this allows for multiple payment providers to be used simultaneously.
Refactored the way guards work to allow for more flexible payment structures (e.g. per company billing)