Fix up DEFAULTPARAM semantics.

I foolishly believed the deprecation message on "hasDefaultFlag" which
suggested I use "hasDefault" instead. After lots of head scratching, I
hardened the semantics so it's like this:
```
 - A method parameter with a default value is PARAM | DEFAULTPARAM
 - A default getter for such a parameter is METHOD | DEFAULTPARAM
 - And "hasDefault" is has(DEFAULTPARAM) && has(PARAM | METHOD)
```
Why all the bonus logic, why not just hasFlag(DEFAULTPARAM)? For some reason
we have a handful of overloaded flags spanning uses which someone apparently
thinks can never intersect but I have not been so lucky overall. So since
DEFAULTPARAM is overloaded with TRAIT, unless we think it's fine that default
getters and method parameters with defaults will pose as traits all the time,
there has to be an anchor bit alongside it.