Switch statement & Duplicate code

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