units: add more/better ways to make ratio units
units: note TODO
units: make units_prod<> friendlier

Now its complicated arguments don't need "typename "..."::type"
around them, which makes them look nicer.
(units_prod is meant to be the relatively friendly type-level
units-combining interface.)
add non-member units_pow<> (type-level operator)
use std::declval for a nicer decltype()
gl_data_preparation: fix some types

(This is units-related but does not require the units patches;
it deserves to be fixed regardless.)
polygon_collision_detection: update some comments per Eli
units: fix numeric_representation_cast's impl to be correct in more cases

It previously couldn't handle the case where the explicit
template argument was unit<> but the value argument was non-unit.
units: don't require BOOST_RATIO_EXTENSIONS

Because of include order, main.cpp didn't compile in the
units branch without this; and it doesn't really hurt.
units: bring std::abs in line with bounds_checked_int abilities

(needed for some code.  IIRC we avoid unqualified abs() because
it misses std overloads for non-'double' types.. possibly even
calling the 'double' version [which is specified by C] for ints)

Still a bit dubious, ah well.
units: add explicit unit<> downcasting constructor

This allows you to change to a smaller representation type
when you intend to, just as you implicitly can change to a larger
representation type.
units_tests: use those unused variables (eliminate warnings)
units: display ratio parts of units more clearly
units: "Int" -> "Num" in template params

It's not integer-specific after all! (Or if it is, it's a bug.)
units: convert to new type-system implementation

This one is nicer! With nicer error messages!  Well,
somewhat nicer and with somewhat nicer messages.
units: fix unused result warning in tests