Accessors over ivars

As Sandi Metz teaches us in [the book](http://www.amazon.co.uk/Practical-Object-Oriented-Design-Ruby/dp/0321721330/ref=sr_1_1), state should be wrapped in accessors: we want to depend on behaviour, not data. Plus this gives us a cleaner way to do dependency injection.