Major overhaul

Now the library fully supports user-defined types.

Now virtual shift is performed by a shift with an
integral constant, instead of the scale member
template.

Other libraries which have been tested and can
provide an underlying type are:

* David Stone's bounded_integer
* Boost rational
* Boost multiprecision

The library is single header now, and everything has been
moved into namespace fp.

The main fixed point wrapper template has been renamed
to fp_t.

Now instead of including a copy of catch and other
external libraries, they are pulled in automatically
during the build process.