Use a Promises/A+ -compliant Promise implementation

Currently Lavaca uses our own Promise implementation which follows the original jQuery $.Deferred behavior: each `.then()` call in a chain returns the same Promise object.  This means that all `.then()` callbacks are called when the first Promise in the chain resolves.  I'd prefer the behavior specified by [Promises/A+](http://promises-aplus.github.io/promises-spec/) and the [es6 Promise draft](http://www.html5rocks.com/en/tutorials/es6/promises/)--that is, `then()` returns a new Promise and a chain of `.then()`s will run sequentially ("wait" for each step in the chain to resolve/reject).  We could use an existing implementation or make our own, but the real task would be ensuring that all library code which calls `.then()` assumes Promises/A+ behavior.