Allow any orderable numeric type for the cost

By dropping Integer, the compiler shows which typeclass constraints are
required by the various functions, so they can simply be added to the
functions as necessary to make them parameterisable on cost type.

An interesting side effect of this is that bks ends up obviously needing
items with an Eq instance, whereas uks doesn't have that requirement.