JSession Refactor

This allows JSession to be unit testable and provides an interface similar to that in Symfony to allow injection of sessions into the CMS.

It *should* be b/c for users however so far all I've been able to do is test stuff with core extensions. If you are doing anything outside of core that uses JSession please do test it or let me know of your application!
Yes, this is b/c. The developers should use the value returned without knowing how exactly it is generated. If someone is trying to replicate the hash without calling the getFormToken method they're Doing It Wrong™.