Create a suite of high-level behavior tests

## Dragging
```gherkin
Scenario: Should move handle along with mouse after pressing
Given Dragdealer is instantiated
When  User presses mouse on handle
  And User moves mouse 100x to right
Then  Position of handle element is 100, 0
```
---
```gherkin
Scenario: Should not be able to move disabled Dragdealer
Given Dragdealer is instantiated with `disabled` option
When  User presses mouse on handle
  And User moves mouse 100x to right
Then  Position of handle element stays at 0, 0
```
---
```gherkin
Scenario: Should constrain handle position under the wrapper bounds
Given Dragdealer is instantiated with (implicit) position 0, 0
  And wrapper element has 500x30px
  And handle element has 100x30px

When  User presses mouse on handle
  And User moves mouse 100x to left
Then  Position of handle element stays at 0, 0

When  User presses mouse on handle
  And User moves mouse 100x to top
Then  Position of handle element stays at 0, 0

When  User presses mouse on handle
  And User moves mouse 100x to top
Then  Position of handle element stays at 0, 0

When  User presses mouse on handle
  And User moves mouse 500px to right
Then  Position of handle element moves at 400, 0
```
---
```gherkin
Scenario: Should slide handle after releasing drag
Given Dragdealer is instantiated with the `slide` option true
  And The handle has been dragged 50px to the right
When  The handle is released
Then  Position of handle element is 50, 0
# The slider gets a force of 4x the last movement and keeps eating a part 
# of it with every interval loop, normally we'd never move an entire 50px
# with one mouse move
  And The handle keeps sliding, up to 250, 0
```
---
```gherkin
Scenario: Should pull handle to closest step after releasing drag
Given Dragdealer is instantiated with the `steps` option set to 6
  And wrapper element has 500x30px
  And handle element has 100x30px

# Considering the simple slider has a wrapper of 500px width and a
# handle of 100px width, the step positions will be 80, 160, 240, 320
# and 400

When  The handle is dragged to 100, 0
  And The handle is released
Then  Position of handle element is 80, 0

When  The handle is dragged to 50, 0
  And The handle is released
Then  Position of handle element is 80, 0

When  The handle is dragged to 350, 0
  And The handle is released
Then  Position of handle element is 320, 0

When  The handle is dragged to 210, 0
  And The handle is released
Then  Position of handle element is 240, 0
```
---
```gherkin
Scenario: Should slide handle to projected step after releasing drag
Given Dragdealer is instantiated with the `steps` option set to 6
  # The slider gets a force of 4x the last movement
  And `slide` option set to true
  And wrapper element has 500x30px
  And handle element has 100x30px

# Considering the simple slider has a wrapper of 500px width and a
# handle of 100px width, the step positions will be 80, 160, 240, 320
# and 400

# is dragged 25px to the right, and will slide 125px, to 125, 0
When  The handle is dragged to 25, 0
  And The handle is released
  And The handle finished its sliding transition
Then  Position of handle element is 160, 0

# is dragged 15px to the left, and will slide 75px, to 135, 0
When  The handle is dragged to 155, 0
  And The handle is released
  And The handle finished its sliding transition
Then  Position of handle element is 160, 0

# is dragged 25px to the right, and will slide 125px, to 285, 0
When  The handle is dragged to 185, 0
  And The handle is released
  And The handle finished its sliding transition
Then  Position of handle element is 320, 0

# is dragged 20px to the left, and will slide 250px, to 70, 0
When  The handle is dragged to 270, 0
  And The handle is released
  And The handle finished its sliding transition
Then  Position of handle element is 80, 0
```
---
```gherkin
Scenario: Should snap handle to closest step after releasing drag
Given Dragdealer is instantiated with the `steps` option set to 6
  # The slider gets a force of 4x the last movement
  And `snap` option set to true
  And wrapper element has 500x30px
  And handle element has 100x30px

# Considering the simple slider has a wrapper of 500px width and a
# handle of 100px width, the step positions will be 80, 160, 240, 320
# and 400

When  The handle is dragged to 100, 0
Then  Position of handle element is 80, 0

When  The handle is dragged to 50, 0
Then  Position of handle element is 80, 0

When  The handle is dragged to 350, 0
Then  Position of handle element is 320, 0

When  The handle is dragged to 210, 0
Then  Position of handle element is 240, 0
```
---
```gherkin
Scenario: Should drag loose handle outside wrapper
```