``plt.subplot`` re-selection without keyword arguments
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The purpose of `.pyplot.subplot` is to facilitate creating and re-selecting
Axes in a Figure when working strictly in the implicit pyplot API.  When
creating new Axes it is possible to select the projection (e.g. polar, 3D, or
various cartographic projections) as well as to pass additional keyword
arguments through to the Axes-subclass that is created.

The first time `.pyplot.subplot` is called for a given position in the Axes
grid it always creates and return a new Axes with the passed arguments and
projection (defaulting to a rectilinear).  On subsequent calls to
`.pyplot.subplot` we have to determine if an existing Axes has equivalent
parameters, in which case in should be selected as the current Axes and
returned, or different parameters, in which case a new Axes is created and the
existing Axes is removed.  This leaves the question of what is "equivalent
parameters".

Previously it was the case that an existing Axes subclass, except for Axes3D,
would be considered equivalent to a 2D rectilinear Axes, despite having
different projections, if the kwargs (other than *projection*) matched.  Thus
::

  ax1 = plt.subplot(1, 1, 1, projection='polar')
  ax2 =  plt.subplots(1, 1, 1)
  ax1 is ax2

We are embracing this long standing behavior to ensure that in the case when no
keyword arguments (of any sort) are passed to `.pyplot.subplot` any existing
Axes is returned, without consideration for keywords or projection used to
initially create it.  This will cause a change in behavior when additional
keywords were passed to the original axes ::

  ax1 = plt.subplot(111, projection='polar', theta_offset=.75)
  ax2 = plt.subplots(1, 1, 1)
  ax1 is ax2         # new behavior
  # ax1 is not ax2   # old behavior, made a new axes

  ax1 = plt.subplot(111, label='test')
  ax2 = plt.subplots(1, 1, 1)
  ax1 is ax2         # new behavior
  # ax1 is not ax2   # old behavior, made a new axes


For the same reason, if there was an existing Axes that was not rectilinear,
passing ``projection='rectilinear'`` would reuse the existing Axes ::

  ax1 = plt.subplot(projection='polar')
  ax2 = plt.subplot(projection='rectilinear')
  ax1 is not ax2     # new behavior, makes new axes
  # ax1 is ax2       # old behavior


contrary to the users request.

Previously Axes3D could not be re-selected with `.pyplot.subplot` due to an
unrelated bug (also fixed in mpl3.4).  While Axes3D are now consistent with all
other projections there is a change in behavior for ::

  plt.subplot(projection='3d')  # create a 3D Axes

  plt.subplot()                 # now returns existing 3D Axes, but
                                # previously created new 2D Axes

  plt.subplot(projection='rectilinear')  # to get a new 2D Axes
