Motion view dev

This branch contains some major changes in the `pydy.viz` module. Which I am listing here. I am opening this Pull request to have a final review before it is merged.  @moorepants @chrisdembia @jcrist @srjoglekar246

P.S: I am working on JS-Testing in a separate branch #74  I plan to get this one merged once that is complete, and merged into `motion-view-dev`.

**New Features:**

 - A new, better UI.
 - Integration with IPython notebooks. For rendering the visualizer inside the IPython notebooks, simply call `scene.display_ipython` from a notebook. (Works only on latest master of IPython).
 - Now rendered objects can be modified from the UI itself(using `edit objects` button in UI), and new JSON will be generated, which can be viewed by clicking `view model` button in UI.
 - Added a new property "material" to the rendered shapes (`Shape` object).
 - Allows rerunning the simulations(after changing the simulation parameters) from the visualizer itself. This feature is partially implemented, but will be fully functional once `System` class comes in.
 - Javascript backend completely modified. Now it is object oriented using Prototype.js.


**Instructions for building this branch with latest IPython, and testing the new features:**

1. Cloning and installing latest IPython:

    $ git clone https://github.com/ipython/ipython ipython-dev
    $ cd ipython-dev
    $ git submodule update
    $ pip install -e ".[notebook]"

2. get this branch from git repo:

    $ cd to pydy-repo
    $ git checkout --track origin/motion-view-dev

3. Add it to PYTHONPATH. 

    $ export PYTHONPATH="/your/pydy/repo/:$PYTHONPATH"

4. Now you can check out the `double_pendulum` example. 
    - cd to examples/double_pendulum
    - comment out the last line in visualize.py, this one: https://github.com/pydy/pydy/blob/motion-view-dev/examples/double_pendulum/visualize.py#L64
    - open `$ ipython notebook`
    - from the notebook call:

    from visualize import *
    scene.display_ipython()

Please feel free to contact me, if there are any difficulties!!

Conda method for testing:

```
$ conda create -n new-pydy-viz numpy scipy matplotlib theano cython sympy
$ source activate new-pydy-viz
(new-pydy-viz)$ conda remove ipython  # conda automatically installs ipython into envs
(new-pydy-viz)$ git clone https://github.com/ipython/ipython
(new-pydy-viz)$ cd ipython
(new-pydy-viz)$ git submodule update
(new-pydy-viz)$ pip install -e ".[notebook]"
(new-pydy-viz)$ cd ..
(new-pydy-viz)$ git clone https://github.com/pydy/pydy
(new-pydy-viz)$ cd pydy 
(new-pydy-viz)$ git checkout --track origin/motion-view-dev
(new-pydy-viz)$ cd examples/double_pendulum
(new-pydy-viz)$ ipython notebook
```
**TODOS(based on suggestions in this conversation)**: 

I have copied original suggestions to maintain the context.

- [x] Update sphinx docs.
- [x] Users should not need to set PYTHONPATH.
- [x] Commit an ipython notebook for the double_pendulum example.
- [x] The model isn't loaded by default, you have to press "Load Simulation". It's nice that the file path is there, but I think it should load the scene when you call "display_ipython".
- [x] There are two boxes for editing the simulation parameters. There should be only one.
- [x] Also this needs to handle 0 to 100-1000 parameters. The simple models on a have a few parameters, but most models have hundreds if not thousands. We probably don't want to display them all to the screen, but maybe let the user scroll through them somehow.
- [ ] The time indicator jumps from 1 to 2 decimal places. Make sure to use a formatter so this always has the same # decimals. Also you should set the decimals based on the min and max time. Some simulations may run at 100000 hz, some may run at 10 hz. We will need a way to speed up and slow down the simulation. It should default to running at real time.
- [x] I liked the time bar indicator. It would be cool to have that and it be drag-able.
- [x] The loop checkbox is missing. I like that feature.
- [x] It is not clear what the "Show Model" button is supposed to do. I though it would make the scene load at first but that didn't happen.
- [ ] I like the object editor, that works nice! how the little menu pops up after selecting the object. The color doesn't seem to change the color. It would be cool if you can rotate and translate the objects relative to their default position here too. I think MG View allows that.
- [x] The rerun simulation button doesn't seem to work.


**Some final TODOs before merge(as discussed with @chrisdembia )**, with priorities:

 - [x] 5 cube
 - [x] 1 decimal places
 - [x] 3 remove mesh from dropdown
 - [x] 4 remove double default from dropdown
 - [x] 2 default dimensions
 - [x] 8 play pause
 - [x] 6 sharp UI
 - [x] 7 blink
 -  [x] Integrate with `System` class
 -  [x] Merge JS-Tests
 - [x] Repeated pressing of pause and/or stop have issues.
 - [x] When you rerun simulation, do you have to then press "load simulation"
 - [ ] Wasn't the load sim button a file selection dialog before?
 - [ ] If you change model parameters, rerun, and then load the sim it seems like the order of the model parameters changes. If you reload the notebook cell, then the parameter order changed. There is something fishy going on there and you are changing the wrong parameters.
 - [x] The stop button disappears when the simulation is running.
 - [ ] Everytime you load a sim in the directory it asks to overwrite the static directory. This shouldn't work like that if you have data files in there. We don't want to erase data files. They need to be preserved so you can load them for future use. We only want to erase the other generated files. What is the purpose of the static dir? Just for data files or also for the html/css/js stuff?
 - [x] Dragging the time slider while the animation is playing doesn't work. Either you should be allowed to do that or it will move you to a new place in the animation and keeping playing from there.
 - [x] If you Play the sim, then pause it, then drag the slider, then play it again doesn't start playing fro where you moved the slider. It plays from where you moved the slider from.
 - [ ] Changing the color doesn't always work for the shape.
 - [x] If the shape is blue the blinking blue isn't that useful to know what you are editing.
 - [x] The stop button dissappears when the sim is playing but reruning the notebook cell doesn't fix it. I would think that reruning the notebook cell would rebuild the widget and everything would be as new.
 - [ ] It would be cool to render the parameters with mathjax so they should their mathematical representation in the notebook.
 - [ ] If you slide the slider when the animation is not playing, then you press play the animation starts from the initial time instead of where the slider is at.
 - [ ] If you select "edit objects" and select a shape then change the color and press apply, the color of the shape does not change. I think this is related to the "default" material only.
 - [ ] I think it would be better if the JSON dialog box was below the scene visualization. Right now, it pushes the scene down the screen, which is odd.
 - [ ] It'd be nice to have xyz labels on the global axes, and ideally the axes/labels could be toggled with a checkbox.
 - [ ] The user should be able to modify the initial conditions and time array via the GUI so that it is easier to rerun simulations.
 - [ ] The user should be able to specify custom filenames in the GUI and save a simulation after they fiddled with the simulation parameters via the GUI.
 - [ ] Scene.display() no longer seems to open up the scene into a new browser tab, the user has to do it manually.