Add support for line item options

This adds a foreign key from Transfer to LineItemOptions (as suggested by Jordan in #1119) and updates the accounting controller and StudentExtraCosts module to make use of it.  You can test this by creating new line item types for a program; you can add options (each with a description and optionally a new cost value) from the admin page for the line item type.  You should see each of these options on the extra costs page in student reg, and it should remember your choices when you save and come back later.

Addresses #1119 and #1120.  However, it could be argued that more front-end work is desirable for #1120.  Also, we don't support a combination of multiple LineItemOptions choices and variable quantity (in the StudentExtraCosts module; the accounting controller should be able to handle it).

I'm wondering if we should omit the condition ```line_item=line_item```. Two reasons:
1) In the case where all of our code works correctly 100% of the time, ```transfer.options.lineitem_type``` is always equal to ```transfer.line_item``` for all ```transfer``` in ```Transfer.objects.filter(options__isnull=False)```, and ```line_item``` is always equal to ```option.lineitem_type``` (the local variables), so the extra condition is unnecessary.
2) If we cause a bug which creates ```Transfer``` objects with mismatched ```line_item``` and ```options```, or if correctly matched objects already exist but ```set_preference()``` is called with a mismatch, we'll want to be able to delete the pre-existing objects.

(If you do remove the extra condition, then you will need to keep the four different conditions.)

I'm similarly wondering if we should modify the ```amount_dec``` field to allow it to be ```None```, so that we can set it to ```None``` to indicate there is no override of the line item or option. This would make the logic of a few functions simpler, and make it harder to accidentally get into a dirty bookkeeping state.