Changed Boost.Test usage to separate compilation.

Changed the Boost.Test header #included in the unit-test file to the
separate-compilation model (instead of dumping all the Boost.Test
code in from a single #include).
Changed implementation detail.

Instead of recursively calculating the implementation array type as
part of "array_md," alias the type from an internal transformation-
trait variadic class template that computes it.