Introduce Doxygen documentation and exception specification, part 1.

For now, dynamic_t is partially documented. All functions which don't throw exception are marked as noexcept. I still haven't decided if it's okay or not.
Some more exception specifications.
Use *.inl extension instead of *.impl.

It seems that other programs understand the latter and don't understand the former.
Make default_conversion_controller_t implementation detail again.
Exceptions stuff.
Moar documentation.
Put documentation in order.

All comments should follow the order: brief description, detailed description (with warnings and notes), template arguments, arguments, return value, exceptions, see also section.
Don't declare brief descriptions explicitly.

Use Doxygen's QT_AUTOBRIEF setting instead.
Add documentation building to CMakeLists.txt.
Add noexcept specification to config_t.

Because it's a great good.
Documentation for utility.hpp.
Hide some implementation details from the documentation.
Add a notice.
Disallow config source contain anything but the root object.

1) It sounds reasonable.
2) Actually I don't have a choice, because config_t::parse may read little more from the stream than exactly one JSON object (it may if you didn't know). It's hard to make useful API with this property.
3) It's how it works now everywhere.
Some documentation for config_parser_t.
Throw only parser errors from config_parser_t::parse.

When the JSON in the config is an array, it's also a format error, and it's better to report this error with config_parser_error_t exception.
More documentation for config_parser_t.
Documentation for config_t exceptions.
Documentation for config_t.
Hide little more implementation details.

Why somebody may want to derive from config_t and access its data members? idk lol