Improve move semantics on utility classes
Fix some missing stuff in `attempt` class
Add `valid()` checker & remove unrequired constraints in `option` class
Some additions to `attempt` class

`map()` and `fmap()` functions added. Remove ambiguous constructor.
Add basic executors

Executors are objects able to execute tasks. This commit provides two
basic executors: `same_thread_executor`, which executes the task in
the same thread that requests it, and `asio_service_executor`, which
wraps a Boost ASIO `io_service` object and submits the tasks to it.
Fix bad qualifiers in `option::get()`
Introduce executors in `future`
Use `asio_service_executor` in TCP IO classes
Some additions to `executor.hpp`

Add documentation and specific tests for functions with different
executor flavors.
Use an executor in `mqtt::session` class

This makes possible to have a pseudo-infinite loop of request processing
without causing stack overflow errors.
Extract message decoder selector to `codecs.hpp`

Instead of switching-casing in `mqtt::session` implementation.
Remove dup of `tcp-server-it.cpp` file
Split tests into unit & integration
Rename `invalid_X` exceptions to `bad_X`

According to the style of standard library.