LPS-51413 As a system administrator I'd like to use 2-way SSL authentication against my SOLR server

Hi Laszlo, thanks for working on this. Good job on your implementation of certificate authentication versus the original basic authentication as interchangeable strategies injectable into the server. Nice separation of concerns.

I've changed a couple things from your pull and thought I should send it back so you have final say on it. Can you verify it on your actual 2-way SSL environment and confirm it works? Please contact me on Skype or Google chat if there's anything you'd like to go over in depth. You can send me again with your corrections, or if you think everything's ok just let me know and I'll forward the same pull to Brian.

In a nutshell:

- I preferred not to copy and rename the original class into the new implementation. (couldn't feel 100% sure that nothing got lost.) Instead I tried to go with a sequence of small refactoring commits where you can see the new implementation emerging from the previous one.

- Wherever there were genuine logic changes (however small) I tried to make them highly visible in individual commits. (https://github.com/arboliveira/liferay-plugins/commit/17180107ed47e4e177682ea544fa785b1e907e4f and https://github.com/arboliveira/liferay-plugins/commit/7637fb50ce8c0ca0371e604c6cc334890ea371c6)

- Moved comments from code to commit messages (https://github.com/arboliveira/liferay-plugins/commit/7637fb50ce8c0ca0371e604c6cc334890ea371c6) and expanded on them with useful information you provided. (https://github.com/arboliveira/liferay-plugins/commit/1d11c8a2d0db1eba2c7aaf9a0efd4d78c91f20d6 - btw skipped checking "stopped" at shutdown for the reasons in the commit message, we can restore it if you believe it's really needed.)

- Split cert auth logic into smaller classes, with temporal dependencies ("first need this in order to proceed with that") made highly visible by way of constructor arguments.

- Tried to isolate exposed bean classes, making them a thin layer over the actual API classes (to make it clearer which fields are bean properties and which are internal state built at "afterPropertiesSet".)

Again, thanks for your good work and feel free to call me if you'd like to change anything.

(cc @mhan810)