Redesign of year and months challenge

Now more code, but better documented
- Add application guard
- Our method is now broken down to individual methods to compartmentalize
the calculations and identify what they do
- Testing helps us to refactor our code
- Return is no longer nil, and reporting is done outside of our methods