Moved count and elapsed variables to Counter.java

- Reduces amount of boilerplate code
- get and set methods for count and elapsed are now final to ensure they
  return as expected
- count and elapsed are protected, so they can be accessed by child
  classes