Move mapper to its own file
Allocate model when loading

When loading an object from a data store we don't want to call
initialize because that object was already initialized and persisted.

We could introduce a separate strategy that would use '.new' to load an
object later if people can come up with good enough reasons why it's
needed.
Introduce mapper header
Move Header to Mapper namespace
[WIP] Yield attribute objects with mapping info
[WIP] Introduce AttributeSet
Compose Attribute using name and field object
Turn header objects into immutable ones
Move attribute and attribute set into their own files
Introduce Loader object
Introduce Dumper object
Make Mapper#loader and Mapper#dumper public
Introduce Loader#identity
Add Dumper#identity
Add result objects to loader/dumper
Bring loader/dumper inline with session expectations
Merge pull request #1 from rom-rb/mapper-attributes

Introduce loader/dumper and header with attribute set

This adds interface required by rom-session. Different loading strategies will be introduced in a new PR.