treat _array and _default more like normal aliases

- _array now requires a _primary field be configured rather than
doing a best-effort guess-search (it can be inherited though)
- PluginMap substantially simplified
- _array and _default can now point directly at classes, set alias
defaults, inherit defaults from other aliases, and so on
- some javadoc and general clean-up