Fix enumerate options

Some packages as enumitem redefines enumerate as an environment accepting
options. To handle thess options, we overload enumerate as an environment
with options but we need to take a special care of empty options.
Process options in order.

The two options 'separate' and 'after' are mutually exclusive. The options
are processed in the order they are passed to the package.