Internal refactoring of JInstallerAdapter objects

This is a start at refactoring some of the internals of the JInstallerAdapter objects.  Right now, there is a lot of duplicate code in each of the adapters, behaviors are rather inconsistent, and all in all the code is an ugly mess.

This PR starts to clean some of that up.  First, a new `JInstallerAdapter` class is introduced which all adapters are now extending from.  For B/C purposes, it continues to extend `JAdapterInstance` however this inheritance is marked as deprecated for 4.0.

Next, several generic methods are introduced into the new abstract class to try and cut some duplicated code out of the system.

The install routines of the component and module adapters have been refactored to demonstrate some of this approach.  The uninstall routine is also cleaned up some to use this code.

Note that further refactoring is possible and encouraged across all of the adapters.  One of my goals is to implement the changes introduced at https://github.com/joomla-projects/joomla-cms/tree/feature-JInstaller/libraries/cms/installer in a B/C manner.  The work in that branch standardized the install routine across all adapters (including supported features like install scripts) and had started work on standardizing the uninstall routines.

### Testing Instructions

Simply apply the patch and install and uninstall extensions; mainly components and modules.  There are no B/C breaking changes to the public API in `JInstaller` and changes in the public API extension adapters should be B/C should any developer have extended these classes.