Snap multiple relative points; 'startCoords' offset

```javascript
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 }
  }
});
```

### relativePoints

The `snap.relativePoints` array succeeds the [`snap.elementOriign`](https://github.com/taye/interact.js/pull/72#issue-41813493) object. There are effectively <code>(&nbsp;targets.length&nbsp;*&nbsp;max(&nbsp;relativePoints.length,&nbsp;1&nbsp;)&nbsp;)</code>  snap targets when snap calculations are done. Snap functions are called multiple times with the coordinates of each `relativePoint`. If no `relativePoints` array is specified or the array is empty then snapping is relative to the pointer coordinates (default).

Backwards compatible – `elementOrigin` still works with the old snapping interface.

```javascript
interact(target).snap({
  mode: 'anchor',
  anchors: [ {x: 300, y: 300} ],
  elementOrigin: { x: 0, y: 0 }    // only one elementOrigin is possible
});
```

### offset

The `x` and `y` values of the snap offset are added to the target coordinates. If the offset is `'startCoords'` then the `pageX/Y` of the `down` event that started the action are added to the target coordinates. See #135 for more info.

Closes #132
Closes #135