Fix switch statement code smell

- Replace conditional with polymorphism to fix switch statement from the Customer.withdraw
- Fix duplicate code with extract method for Customer.getFullName()
- Apply template method to have a different implementation for Company and Person
- Fix bug - the company doesn't have a surname
- After this step, the inital tests still pass
Refactor tests

- Add tests for the new Company and Person classes
- Introduce TestUtil classes for Customer and Account
Merge pull request #4 from danpersa/04-switch-statement

Switch statement & Duplicate code