Use boost::blank as dynamic_t::null_t.

This ensures that the variant never allocates dynamic memory and doesn't throw exceptions in some cases.
Some more noexcept specifications.
Make dynamic_t's move constructor and assignment operator noexcept.

Now these methods never allocate memory and only move the underlying values.