Reworked polyfill support for Zend\Stdlib\ArrayObject

- Instead of using an autoload file, instead created two separate classes, named
  after the type of support they provide. The file Zend\Stdlib\ArrayObject now
  simply has a conditional in it; based on the condition met, a class_alias() is
  created -- and from then on, that alias will be used for
  Zend\Stdlib\ArrayObject.

- Removed autoload.files entries from composer.json files; no longer necessary.

- One test failure currently in doing a comparison of merged array objects; will
  investigate in a later commit.
Solved failing test in ArrayObject tests

- changed a typehint from "ArrayObject" to "self"
Re-added autoload.php files

- BC measure, so that code referencing these files doesn't break
Fix typo

- per @DASPRiD
Renamed compat autoload files and marked as deprecated

- moved autoload.php files into compatibility subdirs where they belong
- marked each with @deprecated annotation
Remove class_exists check

- bad cut-and-paste
Fake scanners out

- Use __halt_compiler(), and then define stub class, in order to trick
  classmap compilers into thinking a class exists.
Class stubs to force classmap generation
Trigger E_USER_DEPRECATED in deprecated polyfill autoload files
Simpler polyfill support

- Have a base class that extends a polyfill class
  - makes classmap generation simpler
  - makes typehinting and mock objects simpler
Mark all polyfill bases as abstract

- they are not intended to be instantiated directly; they are intended as bases
  for the typehinted class that uses the polyfills.
Update ArrayStack.php

Array object cannot be defined twice, this is a minor typo

stack call:
Fatal error: Cannot use ArrayObject as ArrayObject because the name is already in use
[#3984] Import ArrayObject as PhpArrayObject

- and update class declaration to extend PhpArrayObject
Remove unnecessary autoload.php from composer config.