Adds dashboard metrics for lineitemoption choices

Extra costs with options will now show selection counts for each
individual option, in addition to the total count for the line item.

Additionally, get_users_from_module() now uses an OrderedDict, so that
filters from the same program module will appear together, and program
modules that care about the order can return their results in an
OrderedDict.  We make use of this to show the total line item count
before the counts of the options, and to show those things together
without other line item data coming between them.
Allows user lists dict to be any dict type

This fixes a failing test, due to the fact that the code was testing
that only the dict type was being used, instead of any instance of dict.
So the OrderedDict introduced in the previous commit was not considered
valid.
Removes more uses of type()
Clarifies code with descriptive variable names

Also changes filter description to be more non-developer friendly.
Replaces use of kwargs with Q object
Merge pull request #1411 from learning-unlimited/lineitemptions-display

Adds dashboard metrics for lineitemoption choices