Custom User Model

Includes a proposed solution for #3

I'll probably make amendments to this as our use case develops.