made SPDeferred the only class

SPPromise became unnecessary, and posed problems when needing to pass deferred done the calling chain in order to keep them alive (for cases when another object wasn't owning the deferred).

Also re-implemented +[SPDeferred join:] so as to not require a separate class
cleaned up +join slightly, now adding results in arg array order