array_key: sanitize the type requirements, make them method-specific and beautify
the generic enablers. Also make the add() method public and change its name for
clarity.

Also minor change in monomial as response to the changes in array_key.