An extension to Spring Security that enables type-safe roles and permision authorisation (and authentication)