Introduce new classes for re-work

+ ConsolePrinter handles rendering the sorting data to the terminal
+ Observable implements a very simple implementation of the observer pattern
+ Sorter extracts out the simple initialization needed for all sorting classes
Rework bubble and selection sort in new approach
Add insertion sort implementation
Add quicksort implementation
Update README