**Apache Airflow version**: 1.10.12


**Environment**:

- **Cloud provider or hardware configuration**: Google Cloud, custom-8-16384 
- **OS** (e.g. from /etc/os-release): CentOS Linux release 7.7.1908 (Core)
- **Kernel** (e.g. `uname -a`): 3.10.0-1062.18.1.el7.x86_64 #1 SMP Tue Mar 17 23:49:17 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

**What happened**:

Class method [on_load](https://github.com/apache/airflow/blob/ce66bc944d246aa3b51cce6e2fc13cd25da08d6e/airflow/plugins_manager.py#L102) of AirflowPlugin class doesn't run after plugins located in plugin folder, only for plugins installed through pip.

**What you expected to happen**:

Method 'on_load' should run on plugins initialization, that are located in plugin folder

**How to reproduce it**:

1) Create plugin with next code and place it in plugins folder:

```
class TestPlugin(AirflowPlugin):
    menu_links = [MenuLink(category='Google', name='Google', url='google.com')]

    @classmethod
    def on_load(cls, *args, **kwargs):
        raise AirflowPluginException("Test On Load Exception")
```
2) Reload webserver.

_Result_: Webserver logs are empty, new menu appeared in UI.
_Expected result_: Webserver logs should contain information with raised exception, new menu shouldn't appear in UI.
_Reason_: on_load method is called only for airflow.plugins.* entry_points
https://github.com/apache/airflow/blob/ce66bc944d246aa3b51cce6e2fc13cd25da08d6e/airflow/plugins_manager.py#L152

**Additional information**: It is not clear what is the reason for skipping this method call for plugins contained in the folder. At the same time, plugin validation successfully run for plugins from a folder and installed via a package. Validation uses validate method in same AirflowPlugin class and can be extended by user.
https://github.com/apache/airflow/blob/b9dc3c51ba2cba1c61d327488cecf2623d6445b3/airflow/plugins_manager.py#L96
tests/plugins/test_plugins_manager.py
"""
        Test that Airflow does not raise an error if there is any Exception because of a plugin.
        """
        from airflow.plugins_manager import import_errors, load_entrypoint_plugins
        mock_dist = mock.Mock()
        mock_entrypoint = mock.Mock()
        mock_entrypoint.name = 'test-entrypoint'
        mock_entrypoint.group = 'airflow.plugins'
        mock_entrypoint.module = 'test.plugins.test_plugins_manager'
        mock_entrypoint.load.side_effect = ImportError('my_fake_module not found')
        mock_dist.entry_points = [mock_entrypoint]
        with mock.patch(f'{importlib_metadata}.distributions', return_value=[mock_dist]), caplog.at_level(
            logging.ERROR, logger='airflow.plugins_manager'
        ):
            load_entrypoint_plugins()
            received_logs = caplog.text
            
            assert "Traceback (most recent call last):" in received_logs
            assert "my_fake_module not found" in received_logs
            assert "Failed to import plugin test-entrypoint" in received_logs
            assert ("test.plugins.test_plugins_manager", "my_fake_module not found") in import_errors.items()
    def test_registering_plugin_macros(self, request):
        """
        Tests whether macros that originate from plugins are being registered correctly.
        """
        from airflow import macros
        from airflow.plugins_manager import integrate_macros_plugins
        def cleanup_macros():