More auth stuff

### Main changes
* Added `User` model, integrated `models.User` into `auth`.
* Moved `auth.py` and `models.py` under the `bark.auth` module.
* Moved `api.py` under the `bark.lib` module.

I'd be happy to do a code review in this thread, if you think something is confusing or if you have a different idea of how something should work. It'll also be a useful learning experience for the lurkers :)

### Points to note
Everything auth-related is now under the `bark.auth` module.
If anything breaks with "this thing is undefined" errors, that's probably why.

### Something to work on
At this moment, `.gitignore` is rather unwieldy. It needs to be trimmed down, as it might interfere with useful files later.

@mdmoss and I were thinking that our models within same modules should be tied in properly with each other (see `bark.auth.models.Session.user` field, it's a lazy-loading field which references the `User` model), but kept separate between modules.

As such, we'd need to add something like `bark.auth.VerifySessionToken` which would return a `Session` or a `User` object. Or something.