Added ls-defines command

ls-defines: List all defined constants.
ls-defines --user: List all user-defined constants (get_defined_constants(true)['user']).
ls-defines --category date: Equivalent to get_defined_constants(true)['date'].
cleanup for CS (work in progress)
ListCommand Next is go!

Merge the ListClasses, ListDefines, and ListFunctions commands that nobody liked anyway, and provide a sane, unified interface for listing all types of things.

Split the listing duties themselves into Enumerator classes, one per type of thing which could be listed.

Add advanced grepability to all the lists, which is just plain awesome.

TODO: update tests.
Stronger RegEx validation for --grep options.