Add delegate methods

Hi, Sam. I added some protocol methods to `SVPullToRefreshView` so that we can handle more stuffs which are private in your classes.

They are:

``` objc
- (void)pullToRefreshView:(SVPullToRefreshView *)view didChangeStateFrom:(SVPullToRefreshState)state to:(SVPullToRefreshState)state;
- (void)pullToRefreshView:(SVPullToRefreshView *)view didLayoutCustomView:(UIView *)customView withState:(SVPullToRefreshState)state;
- (void)pullToRefreshView:(SVPullToRefreshView *)view didDragWithProgress:(CGFloat)progress;
```

These allow the delegate observing the state of the view. The client is able to customize some behaviors with the help of the protocol.

A common issue is the layout of a custom view. Now, you can adjust position dynamically.

Also, I added an protocol method which may pass a `progress` parameter so that I can set the custom view's progress. You know, a circular progress bar on a pull to refresh view. Fancy right?

As far as I am concerned, the above features might not be necessary for everyone, but they handled some common issues and save your time, absolutely.  By the way, they are `@optional`. :wink: 

Please take this PR into consideration. Thanks!