Add common convenient methods (such as -currentValue) + performance improvements

I've added a few common convenient methods, such as the ability to get label's current value at any given point of time (even in the process of animating). You can now set default animation duration as a property for the label instead of using 2 seconds or sending a magic number each time you want the label to animate.

Also, obvious CPU performance issue has been fixed — now if you ask a label to count to another value while it is still in the animating state, old timer gets invalidated before creating a new one.

P.S. Thank you for this handy class. 👍
NSTimer holds a strong reference to its `target` as passed in on the call to `+[NSTimer timerWithTimeInterval:target:selector:userInfo:repeats:]`.

From NSTimer docs:
> `target`: The object to which to send the message specified by `aSelector` when the timer fires. **The timer maintains a strong reference to this object until it (the timer) is invalidated.**

#### For your crash:

The `NSRunLoop` holds the strong reference to the `NSTimer`. The reason you get a bad access crash is because when you assign directly to the `self.timer` property, it immediately deallocates before NSRunLoop can grab a reference because `self.timer` is a weak reference. If you assign to locally scoped variable first (`NSTimer *timer = ...`) it stays alive for the duration of the local scope becomes local variables are implicitly strong references.

So, the assignment should look something like these lines:

    NSTimer *timer = [NSTimer //....
    [[NSRunLoop mainRunLoop] addTimer:  //...
    self.timer = timer;

This way, the `NSTimer *timer` implicitly strong reference keeps the NSTimer alive for the current scope, long enough for the NSRunLoop to grab a reference to it, then we assign it to our weak property.