Refactor Containable.

Rename Containable to Element and make it a class.
Also add functionality to attr_field macro: it can now support
aribitrary number of arguments with optional type of argument.
Update version