Add more expressive Coercer interface

The usage pattern Coercer.coerce(value, klass) can now be written much
more expressively, using the notation Coercer.from(value).to(klass).

As a result of this change, the individual coercer methods, like
Coercer#to_boolean, Coercer#to_integer, etc., are now private methods.

This is because previously, nil/blank values were rejected immediately
in the Coercer.coerce method, meaning that there was no chance methods
like Coercer#to_integer would be accessing a nil or blank value. With
the new interface however, calls like

    Coercer.from(nil).to_string

would require each individual coercer method to implement code that
checks whether the string is nil/blank.