Changed BudgetDataSource to a Singleton and fixed so that it handles the open and closing of the database