Move defining fields to adapters

Currently in every single submodule that requires additional fields in model,
we've got a conditional block for each ORM. To reduce code duplication,
a `define_field` method was added to each of ORM adapters. Now we can run it no
matter what ORM is used, and adapter will handle it.

This is the first step to extracting adapters. Next one will be to move defining callbacks to adapters.

cc @kirs

*Update*

Ok, I've already moved defining callbacks, too, and I've added it to this PR.