[promise] Fix basic behavior tests
[promise] Wrap promise init function in try..catch
[promise] Log when creating promises without `new`
[promise] Revert change to `this` in promise init function
[promise] Add HISTORY entry
only consider root values that are strings

We should treat 0/false the same way as null/undefined/NaN for the
`root` configuration which is prepended to module paths in a combo url.
remove unused `type` assignment
variable per line for better readability
reuse index variable instead of array variable
use a descriptive name for the sorted module array
keep `len` assignment local to the for-loop
remove unused variable assignments
use `comboBase` to store the comboBase

Now we don't need `comboSource`, `base`, and `j`, so we delete them.
move `comboSource` initialization to the top
use local module name over closure variable
use `comboMeta` to store combo metadata
check for inserted modules by module name
drop module early if it dne or has been inserted
remove `groupName` variable
merge first and second for-loops

The first loop clustered modules under the comboBase and the second loop
further clustered modules by type, as well as calculating some general
information about the combo url (e.g., combo separator and max url
length).