Refactor models

This a big refactor

- use rails4-way refactoring model modules
- rename `authenticate` and made them more clearly
- remove `Application` model's `model_name` magic
- extract model's non-ORM-specify codes to module(a way to decouple between ORM and model)
- some clean up

The PR may not be merged, but may give some ideas to discussion
We don't need the `_adapter` suffix. Those are the concrete classes, and their namespace explain who they are.

Loud thinking: those classes always need to include the `mixins`. I'm sure there's terminology for that, now it's not coming to my mind.