POC: 2D EAs via composition
Plenty of kludges and linting errors in here, just want to push it to add composition to the discussion.

Instead of patching existing EAs, this introduces ReshapeableArray which just wraps other EAs, and implements reshape methods.  EAs that _do_ natively support 2D can set a `_allows_2d = True` and avoid being wrapped.

In the process of getting this passing, found a handful of new issues/bugs.  Will try to push fixes for those independently.