init refactoring practice: BudgetPeriod
First make duplication obvious (same) by
-Extract Local Variable (Alt-Shift-L)
-Remove useless parenthesis
-Use start of period instead of end Date
Then extract duplication by:
-Extract Method (Alt-Shift-M)
-Rename (Alt-Shift-R)
Remove Magic Number by:
-Extract to method
-Inline Temp (Alt-Shift-I)
Data Clumps---Missing domain objects!:
-Add new abstraction
-Use new abstraction
-Extract Method (Alt-Shift-M)
-And the original method is now a wrapper
Rename Ambiguous names by
-Rename (Shift-Alt-R)
Comments & Lazy Class:
-new abstraction: BudgetPeriod
-Replace getBudgetPeriodType with BudgetPeriod
-delete useless comments
Remove Dead Code
Revert "Remove Dead Code"

This reverts commit 57cc75352133f113ef642c567a5b75b4f3d84be2.
Remove Dead Code
Remove Dead Code
Data Clump and Odd Name
Feature Envy:
-Move functionality to Period and BudgetPeriod
-Inline Temp (Alt-Shift-I)
getBudgetPeriods() to be refactoring
Primitive Obsession:
-Iterate BudgetPeriods instead of Strings
-And move it to BudgetPeriod
Abstraction Distraction:
-Use of different abstraction levels in the same code
-And new getAmountOfOverlappingDays in Period
-Use more generic version
Last refactoring made the first and last budgetPeriod the same, so we
can delete the checks.

Possible future directions:
• Introduce Budget class (not exists!!)
• Introduce Money class (not exists!!!!!)
• Remove the BudgetCategoryType
• Much more primitive obsessions