Promise used to be typed as any, giving incorrect results. This change fixes places that were incorrectly typed and re-exports the actual Promise type from es6-promise. It also fixes a series of compilation errors discovered/triggered by this change.