Distance along shape

Related to onebusaway/onebusaway-application-modules#100, this PR modularizes distance-along-shape computation and adds a new method which uses `shape_dist_traveled` values where available.

Configuration is done with a bean (so it can be overridden by users in their bundle-builder configuration):

```
  <bean id="stopToShapeMatchingService" class="org.onebusaway.transit_data_federation.bundle.impl.MultiStopToShapeMatchingServiceImpl">
    <property name="matchingServiceImplementations">
      <list>
          <bean class="org.onebusaway.transit_data_federation.bundle.impl.DistanceBasedStopToShapeMatchingServiceImpl" />
          <bean class="org.onebusaway.transit_data_federation.bundle.impl.HeuristicStopToShapeMatchingServiceImpl" />
          <bean class="org.onebusaway.transit_data_federation.bundle.impl.FallbackStopToShapeMatchingServiceImpl" />
      </list>
    </property>
  </bean>
```

By altering the bean configuration, users can disable the fallback option, such that if there are shape matching problems bundle building will fail, force use of `shape_dist_traveled` (or prohibit it), etc., plus introduce new stop-to-shape matching mechanisms simply by instantiating a bean.