Budget overhaul.

Major changes:
- Remove the concept of a default value in the budget and all
  references to it -- all budget rows will now default to 0.00
- Remove the Month table and replace with year and month columns
  in the Budget table that must be unique together with the
  category (enforced at the database level)

Minor changes:
- Refactor import statements to favor relative imports when
  possible
- Replace all function calls within the definition of a
  function parameter list with a sentinel value
- Simplify calculation of amount available to budget
PEP8 compliance and other minor stuff
Add tests for budget_save_amount()
(tiny) Change internal class _SidebarAccountItem to a new-style class
Several budget-related changes
- Add amount validation to budget_save_amount()
- Make budget URLs with out-of-range month give a 404

Also:
- Make root moneybin source folder into a package
- Specify module imports in ledger/__init__.py
- Several small style changes
Fix screwy imports (ugh)
Budget overhaul part two.

DB API
- Refactor DB API budget functions to take year
  and month params instead of a single date param,
  and add year and month validation
- Update budget DB API tests to reflect new function
  signature

Forms
- New 'BudgetCreateUpdateForm' to do validation on
  entered budgeted amounts

Views
- Change date parameters for budget-related views to
  take year and month separately, instead of a
  datetime object
- Factor out gathering of budget table data in
  BudgetListView to a separate function
- New BudgetCreateUpdateView that uses a dynamic
  Django form and a separate page for
  updating budgeted amounts.

Other
- New budget update url pattern
- Disable admin page by removing URL pattern for it
- Some code style changes
- A few cosmetic changes (e.g. budget balance table
  is now always visible)
Add budget update template
Handle POSTing empty field when updating budget (use amount = 0)