Adding ability to override TimePathedSource step sizes.

We would like to be able to use MostRecentGoodSource on sources that are not split exactly on hour, day, month or year boundaries. For example, our batches are 8 hours and we want the most recent one.
why not be more direct and just add a method:

```scala
// Override this if you want to change how we get the duration
def getDuration: Option[Duration] = TimePathedSource.stepSize(pattern, tz)
```
then we are totally binary compatible.