Split tinympl into fine-grained headers

1. The headers `algorithm.hpp`, `algorithm_variadic.hpp` and `variadic.hpp` are split into series of small headers, one header per class.

2. Eliminated most of the stuct/class missmatches. If we had

        template<...> struct foo { };

   and its specializations such as

        template<...> class foo<...> { };

   then clang complained. Now all the declarations and specialization use `struct`. The clang should be calm and quiet.

4. Added unit testing infrastructure under `tets/` directory. Each header now has its corresponding unit test file under test/tinympl. We use Boost.Test framework to generate test runner code. Unit tests are currently empty, but may be filled-in systematically. Currently they just include corresponding headers to test inter-header
   dependencies. The old testing infrastructure under `examples/` is still here.


Both, `examples/` and `tests/` are run on travis-ci. As previously, the tests pass for g++ and fail to compile on clang. Errors are pretty same as for master, except the struct/class missmatch errors, which gone away.