Feature/slider refactor

This PR refactors the slider functionality and associated behaviors into a set of classes. The goal is to make the sliders more maintainable and extensible. I've broken the sliders into the following classes in `js/components/slider`:

- **Slider** - Core slider functionality. No business logic (i.e. courses, decks, etc). Just API to slide elements and ability to plugin additional behaviors.
- **CollectionSlider** - Basic slider with some additional controls for showing courses.
- **DeckSlider** - Basic slider with additional controls and behavior for playing, shuffling cards in a deck.
- **ResponsiveSliderPlugin** - Plugin that handles the responsive layout logic. This means identifying the screen size and adjusting the size of the slider to show the maximum number of items that will fit and slide items accordingly. 
- **TouchSliderPlugin** - Plugin that handles the touch behavior. This adds the ability to swipe left/right to go to the previous/next item or swipe up/down to switch between sliders when there are multiple sliders on the page.
- **KeyboardSliderPlugin** - Plugin that handles keyboard navigation behavior. This adds the ability to use the keyboard left/right arrows to operate the slider.

The reason for creating plugins, was to better separate concerns from the core slider functionality. That should also make it easier to understand, test, and extend the slider with new behavior without actually touching the core slider.

In addition to the refactored slider functionality, this PR also includes some modifications to `deck-view.js`, `collection-index.js`, and associated stylesheets and templates in order to facilitate the slider changes and fix some related issues along the way.

NOTE: Added unit tests to the core slider in `slider_spec.js`, which was most important since plugins and the derived sliders depend on it. Need to add some for Collection/Deck sliders and the plugins as well. To run the tests, go to [http://localhost:8000/jasmine](http://localhost:8000/jasmine).

---
@jazahn @roderickmorales can you review when you get a chance?