Adds sibling_discount Tag & optimizes accounting

Optimizes the accounting controller by caching the sibling_discount
amount, and by caching the list of students that have sibling discounts.

Further optimizes the controller by skipping all calls to
execute_sibling_discount() if there is no sibling discount.
Optimizes accounting by avoiding subqueries
Limits accounting to registered students

Optimizes the accounting modules by limiting searches to students who
are registered for the program, rather than all students who have a
Transfer for that program.

In theory this should not change anything, but there exists some bug
that is creating Transfer objects for all users. This bug was crippling
the accounting module before this commit.
Moves memoized accounting properties to Program

The memoized properties weren't being very helpful in the accounting
controller, because they still needed to be computed once per
IndividualAccountingController. By moving these properties to the
Program model, these properties will only need to be computed once per
request.
Adds sibling discount to program creation

Also makes some fixes to the program creation form template, and adds a
sibling discount setter to Program.
Avoid duplicating executed transfers

The accounting controller has a function add_required_transfers() which
essentially initializes a student's financials for a program, by creating
transfers from "accounts receivable" to the program for any required line
item types.  The transfers are deleted and re-created to ensure that they
have up-to-date line items, e.g. if the costs of the program are changed.

If this function is called for a student whose transfers have
been executed, either by submitting a payment or via an administrative
action, then more transfers would be created.  This change should avoid
the problem by not creating any new transfers for line item types that
have already-executed transfers associated with them.
Clarify credit card view template
Fix bug in IndividualAccountingController.amount_siblingdiscount()

The Program.splashinfo_objects property has user IDs as keys and booleans
(e.g. only True) as values.  The accounting controller should thus check
for the presence of the current student's ID in that dictionary, rather
than the ESPUser object representing the student.
Ensure that sibling_discount is always a Decimal
Merge pull request #717 from learning-unlimited/accounting-optimizations

Accounting optimizations