Expand the functionality of the BudgetDatabase.

Adds a GetBudgetDetails call which returns full information about the
expected budget at future times.

Also adds a cache layer so that multiple GetBudgetDetails calls can't
hammer the filesystem I/O.

BUG=617971

Review-Url: https://codereview.chromium.org/2173833002
Cr-Commit-Position: refs/heads/master@{#408104}
4 files changed