[RFC] Support for HTTPS Protocol, Certificates for IIS 7-8 and SNI for IIS 8

This replaces the old PR: https://github.com/projectkudu/kudu/pull/1386


Requirements
----

- [x] Should be able to add custom HTTPS Bindings though the UI
- [x] Should be able to choose a certificate when adding a custom HTTPS Bindings though the UI
- [x] Should be able to choose SNI on IIS 8.x
- [x] Should not be able to choose SNI on IIS 7.x
- [x] Should not not be able to set a host name on unless the Certificate is a wildcard cert (*.) or if SNI is enabled

The UI has changed significantly, I ended up choosing to mimic the UI in the IIS manager instead of the "Syntax" thing, this is because I had to add some additional fields anyways, like certificate and SNI on IIS 8, so I ended up remaking it completely for familiarity sake. (IIS Administrators should now be familiar with the fields)

- [x] Should be able to add define default HTTPS bindings
- [x] Should be able to configure certificate for default HTTPS bindings
- [x] Should be able to configure SNI for default bindings
- [x] Should be able to configure Certificate stores (relevant for IIS 8 as it allows you to choose multiple stores when adding certs, we could state that the cert HAS to be in the personal store for KUDU as an alternative)

I Changed the whole configuration concept to be a Configuration section, and added an abstraction on top of that that to keep backwards compatibility.

Default bindings are now quite flexible in the way that you can add any number of default bindings, currently only with http or https, but it should now be significantly easier to add support for other protocols if needed.

There is still a few missing things in this PR:
----

- [x] Move IP's and IISVersion to a IKuduContext or redesign the KuduEnvironment class to support those. They where added to the IKuduConfiguration for now as it was the easy route, but they don't belong there as they are not configuration values.
- [ ] Tests - Clearly there needs some testing here.
- [ ] Cleanup the default `app.config` and refresh the documentation.
- [x] CLA Signed
- [ ] Squash all commits into a single for easy of review.
- [ ] Lookover @n3rd's fork to limit conflicts.
- [x] Fix usage of Apps definition (seems broken).

Please feel free to note other things missing.

CC: @n3rd, @davidebbo, @ahmelsayed, @suwatch (Those that participated in the old PR)

----
From the old PR:

We need to be able to define HTTPS bindings for our app's deployed with KUDU, so since I found #923 and that didn't seem to have much traction, I thought I would look into how this could possibly be added.

So this is a work in progress, but I wanted to see if I could get some feedback midway as I choose to change the configuration concept as well.

I am still figuring out how to deal wit certificates, as those become a thing to deal with when we suddenly wan't to do https.
Arh... Well that is technically a configuration issue.

What probably happens is that you don't have any certificates by the name I am currently using for testing and debugging (*.localtest.me).

as per:
```
<bindings>
  <serviceBinding scheme="http" url="scm.kudu.localtest.me" />
  <serviceBinding scheme="https" url="scm.kudu2.localtest.me" certificate="*.localtest.me" />
 
  <applicationBinding scheme="http" url="kudu.localtest.me" />
  <applicationBinding scheme="https" url="kudu2.localtest.me" certificate="*.localtest.me" />
</bindings>
```

But that brings me back to the "how to signal configuration issues"...

----

Just as before however, default bindings etc will be turned off by default in the final change. tracked under the item: Cleanup the default app.config and refresh the documentation.