@register()
===========

- provide __repr__?
- provide __dir__?
- should we raise exception if config class has key starting with "_"
  instead of skipping it?
- provide some kind of isinstance() check for @register()ed classes?
- should we check class is not instantiated?
- should we avoid instantiation in metaclass_wrapper
  (exception from __init__)?

parse()
=======

- provide some way to also parse a dict object
- should we rollback() and reset _conf_map on validation error?
- should parse() return get_parsed_conf()?
- add _after_parse callback? (it's gonna be a class method)
- add 'transformer' callable to schema?
  should it be executed before or after validate?
  should it be executed for the default value as well (probably not)?

parse_with_envvars()
====================

- not happy with `case_sensitive` arg

schema()
========

- schema: figure out what do in case no default value is specified
- move running of validation into schema (validate() method)

Generic
=======

- provde a way to pass (and parse) a dict object?

Tests
=====

...

Others
======

- make _BOOL_TRUE and _BOOL_FALSE public and documented (rename to
  TRUE_BOOL_STRINGS and FALSE_BOOL_STRINGS or something)?

Corner cases
============

- by default @register attachs a 'mro' attribute to the class; despite this
  can be overridden it would be nice to remove it somehow.
