Original Version - Copy & Paste
Refactoring Attempt #1 - Create object by passing in functions that take an object refererence
Refactoring Attempt #2 - Inheritance via Object.create
Refactoring Attempt #3 - Composition using a closure for the inner object