Slightly Buggy But Handles Expanding Content

Adapted technique from this article:
http://n12v.com/css-transition-to-from-auto/
Fix Bugs by Tightening Control on Timing

Introduces a polling technique in the `after()` method to only
move to the next state after expected conditions are satisfied.
Adds Speed Prop

A long collapsible with short duration opens with much more speed
than a short collapsible with the same duration. This feels
inconsistent. We want them to open with the same speed. Therefore,
speed should be consistent and duration should rely on content height.

Adds speed prop to propTypes and getDefaultProps, with a default of
700 pixels per second.

Adds setTransitionDuration() method that calculates duration based
on speed and content height (contentHeight / speed = duration) and
sets the duration on the body.

Adds a call to setTransitionDuration() in setBodyHeight() since we
will always want to do them at the same time.
Fix Mobile Safari Yo-Yo (Again)

Make sure setTransitionDuration() is only called in one place. Not
the root cause.

Turns out the body height was being unset while the opening class was
still on, before the open class is added.

Use `after()` to make sure open class is added before body height is unset.
Fix Yo-Yo Bug Reintroduced by Speed Prop Transition Duration Override

Setting transition duration basically results in a transition `all`.
So when it gets the open class, there is still a transition in effect
when we unset the body height.

Adds unsetTransitionDuration() method and calls it where necessary.
For more granular control, moves calls to setTransitionDuration() where
necessary.
Refactor Transition Helpers

Creates new transition helpers, grouped in an object literal, and
refactors them to be highly reusable and unaware of the collapsible
internals.

Replaces calls to old helpers and verify everything still works the
same. Deletes old helpers.
Refactors Transition Helpers into Separate File and Moves Methods into
CollapsibleBody

Move the transition helpers into a separate file. Update gulpfile.js
to concatenate new file. Update all helper function calls.

This allowed me to move methods into CollapsibleBody. Moved over all
methods that work on CollapsibleBody DOM node.
Fallback for Transitions

Adds checks in all Transition helper methods to return if transitions
are not supported so that we don't have to wrap every call with an
if statement.

If transitions are not supported, call `this.finsihOpen()` and
`this.finishClose()` at the appropriate location.
Discard TODO.md

We can use pivotal to direct the work. Anything else just gets neglected.
Merge pull request #5 from deseretdigital-ui/expanding_content_fix

Expanding content fix