Introduce special kludges to use dynamic_converter from config_t.

Now all the converters provide special hooks which allow to track traversing of an object and handle conversion error in a customizable way.
Move implementation of some dynamic_t's methods to a separate file.
Introduce dynamic_t conversion method with user-defined controller.
Remove unnecessary constructor.
Why in the world a value in a config cannot be null?

I've removed a public method and relaxed restrictions on configuration files, and the build is still passing. Such tests, wow.
Drop config_t's own conversion code in favor of dynamic_t::to method.
Split config_t code into several files.

Because code style.
Hide some implementation details.
Fixed message about numeric overflow.
Code style, part 1.
Little optimization for the maximum speed.

In some simple cases dynamic_converter doesn't copy data and returns const reference instead. Now config_t's methods do the same.
Use references instead of pointers because it's C++.
Replace config_t::to_string method with operator<<.

Now config_t may be converted to string with boost::lexical_cast and written to any ostream.
And it looks like dynamic_t.
Hide some config_t's methods from users.

Why do we need them? I guess, user may check the object type via the underlying_object() method.
Change root object's path.

I guess, "<root>" is more clear a bit than "path".
Merge pull request #3 from leonidia/feature-conversion-hooks

Little rewrite of config_t.