mediawiki.api: Use Promise.then instead of manual Deferred wrap

This is exactly what Promise.then is built for.

As a nice bonus, this way the fail/reject handler is transferred
automatically, and we don't need to call resolve() manually
since the return value from then(Function done) is the resolved
value (or another promise).

Minor clean up:

* category: Fix type documentation (primitive string instead of String object).
* category: Use simple boolean check to assert value is no longer false.
* Use String() cast instead of explicitly calling .toString.
* parse: Fix bug where in theory the deferred would never be resolved if
   the condition evaluated to false.
* watch: Add missing @static.
* watch: Simplify params/$.extend logic.

Change-Id: Iedbc70b2573c4f6b0d9e133c6f31e8f0b19c6f5e
Merge "mediawiki.api: Use Promise.then instead of manual Deferred wrap"