[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.
That would be if you configure a default https right?... default http should still work fine? (as it does not enter that case)...

There is some considerations around how we should deal with this when there is no Certificate selected, because we can't test the site after creation if that is the case, and Kudu will halt, So I figured that it should be mandatory, but I couldn't see what error strategy there was for "Configuration Errors".