Reduce function calls in creation of Item classes

With heavy use of Stash creation of Item classes & setKey shows up
in profile data, so the change tries to reduce function calls in these.

Suggested followup is executeGet().
Note: Might need another pass on this tomorrow for CS / tests if this is otherwise accepted.
Note2: Contains interface change on Item to force array type on $key, felt like a easy way to avoid having to check.
The second arg should default to null, so it can be called with one arg without a notice beeing emitted