implement missing Enum members

The default implementation of succ, pred, enumFrom and enumFromTo error
out when the defined tags are not contiguous. This patch provides
implementations for those functions that work even this case.
Note that the new functions should _agree_ with the default implementations,
that is, they only produce different results when the default
implementation would return bottom.

This is especially useful for "flag" types where a list of all flag
values is needed to check them against a bitmask
sort enum constructors by tag values

As it stands now, enumeration constructors are defined in the order they
are given in the c source, but they might not be in ascending order of
value. This prevents derived Bounded instanced from
working properly. Reordering the constructors solves this problem
without resorting heavier measures like creating custom instances. Also,
it only effects enums with explicit tags.
Merge branch 'master' of https://github.com/Philonous/c2hs into Philonous-master
Minor cleanups
Merge branch 'Philonous-master'