First draft of custom label implementation

PopUpView wobbles about a bit as the value changes. This is because the
size is calculated for each new value and it frequently changes.

Perhaps the delegate could tell the popUpView what the largest string
would be ahead of time?
Fix: show first frame with correct popUp size
Renamed delegate method and fixed animation glitch

Delegate method now passes ASProgressPopUpView as a parameter.
Animation now starts from the correct point when setting
‘alwaysShowPopUpView’ to YES.
Remove animation only if it has completed
Precalculate popUpView size when setting delegate

Keeps the popUpView size consistent as it moves.
Implemented ASProgressPopUpViewDataSource

Moved ‘progressView:stringForProgress:’ to dataSource protocol.
Implement the dataSource protocol to supply custom string values to the
popUpView label. The popUpView size is calculated in advance to stay
consistent - though you can opt out of this if needed.
Set _textLayer frame to rect integral

Ensures pixel alignment for crisp text
Reset frame after adjusting layer anchorPoint
Set popUpView frame to rect integral

Frame should be set before calculating arrowOffset to get an accurate
result.
Call 'positionAndUpdatePopUpView' before hiding popUpView
'calculatePopUpViewSize' now adapts considers dataSource

If there’s a dataSource then calculate the popUpView size based upon
it’s values, otherwise use the default string ‘100%’.
Only call 'positionAndUpdatePopUpView' when needed
Added extra progress view example
Handle nil from dataSource progressView:stringForProgress:

Show default percentage value if nil is returned from dataSource.
Changed example progressView
Merge branch 'custom_label'