Hide some implementation details.

It's not very good that dynamic_t provided internal boost::variant storage to dynamic_constructor's.
Now it dynamic_constructor specializations use dynamic_t's own constructors to create dynamic_t from the primitive types.
Introduce some exception-safety.
Check for range overflow when constructing dynamic_t from a number.