No float convert

This change disallows conversion from floating-point types - which brings the library into line with it's documentation.  Currently:

rational<int> r(0.1);

compiles just fine, but doesn't generate any kind of sensible answer.  See discussion: http://lists.boost.org/Archives/boost/2014/07/215504.php

Note that this change includes (and depends upon) two previous pull requests:
https://github.com/boostorg/rational/pull/2
https://github.com/boostorg/rational/pull/3

The only breaking change I can detect with this commit is a currently untested one:

constexpr rational<short> r(3); // fails

this works however:

constexpr rational<short> r(static_cast<short>(3)); // OK

While this is might be fixable, frankly I don't see the point - I suspect that real world usage of rational with shorter-than-int-types is vanishlingly small?