Updated to use "msgrepeat" instead of "warned"
Extend DiscountModule to allow a secondary option for modifying the
percent applied rather than modifiying the discount total directly.
Added a new percentdiscount type PD for house/virtual coupons
Documentation for new class function
Merge pull request #244 from DavidHermann/master

added whitespace for legibility -- functionality should not be affected
Refactor using coding standards. Changes are in tabs vs spaces,
brace placement, and other formatting details. A few API functions
were renamed using camelCase but only functions that are self-contained
and not referenced outside the API classes.
Code formatting (spaces, braces, etc)
Code formatting (whitespace, braces, etc). I focused on things
that have unit testing available so I have (hopefully) verified
that I didn't break anything
Do not include records with a valid department number in tender
total for subtotaling. These are typically manufacturer coupons.
Because they're flipped to trans_subtype='T' after completing a
transaction they alter the subtotal on reprinted receipts in
a confusing way.
MySQL strings aren't zero-indexed because of course they aren't...
Revisions after testing PHP-based receipts. Coupon handling was altered
to treat them as non-tender records. The categorized implementation
had a couple bugs relating to NULL-named categories. The in-order
receipt needed some *light* sorting to get tenders after the total
lines where they belong.
Code cleanup & formatting
Lane configuration in the database proof-of-concept.
Only the "debug" and "security" tabs are currently the DB config.
Settings in ini.php still take precedent and removing them in favor
of the opdata.parameters values is a manual task. Proper transition
needs to be sorted out. In theory just about everything could go
in the parameters table. Exceptions are:

laneno => lane needs to know its number to look up lane-specific
	  records
DBMS, localhost, localUser, localPass, pDatabase => database
	connectivity is needed to lookup settings via the
	database
Expanded use of opdata.parameters. Settings will be updated in both
opdata.parameters and ini.php if present in both. Deleting a setting
from ini.php will result in that setting living only in the
opdata.parameters table. Expanded support for arrays (including
keyed arrays) and booleans. SpecialDept handler mapping cannot
yet be handled by opdata.parameters because it's a multidimensional
array.
BUGFIX: void after non-cash tender was not working on foodstampable
items
LEGACY: use new receipt reprint consistently
Calculate weight when possible on non-sale, scale stickered items
for consistency in dtransactions.quantity values
BUGFIX: wrong variable name
BUGFIX: Incorrect URL parameter linking batch tool to item editor
Automatic right alignment on numbers in FannieReportPage
Added FormLib::get() as equivalent for FormLib::getFormValue() in the interest of brevity
LEGACY: bugfix: trim excel price fields better