Implement snap multiple relative points

Effectively having multiple elementOrigins
Pass coords for each relativePoint to snap funcs
Fix setting snap offset when element has no rect
Allow 'startCoords' in snap.relativePoints

Closes #135
demo/snap: demonstrate relative to 'startCoords'
Subtract origin from snap relative startCoords
demo/snap: fix grid drawing without relative
Revert "Subtract origin from snap relative startCoords"

This reverts commit 3d31d1ce2ad2ef50f824e7a2018cebbf8bc3a114.
Revert "Allow 'startCoords' in snap.relativePoints"

This reverts commit 1ca1164229ff54dc4b1ad1934c805d02b89d6052.
Implement snap.offset; allow 'startCoords' offset

Re: https://github.com/taye/interact.js/issues/32#issuecomment-46766783

Closes #135
demo/snap: origin 'startCoords' not relativePoints
Improve back-compat for inertia, snap, autoscroll

with interactable.snap(), interactable.inertia() ...
Merge branch 'snap-relative-points'

interact(target).draggable({
  snap: {
    targets: [ {x: 300, y: 300} ],
    relativePoints: [
      { x: 0, y: 0 },  // snap relative to the top left of the element
      { x: 1, y: 1 },  // and also to the bottom right
    ],

    // offset the snap target coordinates
    // can be an object with x/y or 'startCoords'
    offset: { x: 50, y: 50 }
  }
});
CHANGELOG.md: snap relativePoints and origin