WIP: Scaleout plugin

* Enables clients to enable scale out groups to be used for routing

* Enables servers to enlist in a ScaleOut group

#### Things left to do

- [ ] Add support for the gracefull shutdown call back (depends on the core pull)
- [ ] Cache the SC routing table for X seconds
- [ ] How do we acceptance test this?
- [ ] Should we perform retries when we startup and SC isn't responding? 
- [ ] Move the SC api url config to a common `.ServiceConntrolUrl(...)` config call and by default read `AppSettings["ServiceControl/ApiUrl"]`
- [ ] Document the public api on docs.particular.net
> Why do we do this via http, why not just send a message directly to SC
queue?

Needs to be "instant" and remember that SC can be backlogged, we don't want
this to wait behind eg saga audit messages etc.

We also want to catch missconfigurations at startup?

On Thu, Nov 20, 2014 at 6:31 AM, John Simons <notifications@github.com>
wrote:

> In src/ServiceControl.Plugin.ScaleOut/SeverSide/ScaleOutGroup.cs:
>
> > +
> > +            public ReadOnlySettings Settings { get; set; }
> > +            public Configure Configure { get; set; }
> > +
> > +            protected override void OnStart()
> > +            {
> > +                var scaleOutGroup = Settings.GetOrDefault<string>("ScaleOutGroup");
> > +
> > +                if (string.IsNullOrEmpty(scaleOutGroup))
> > +                {
> > +                    scaleOutGroup = Settings.EndpointName();
> > +                }
> > +
> > +                var apiUrl = Settings.Get<string>("ServiceControlApiUrl");
> > +
> > +                var httpWebRequest = (HttpWebRequest)WebRequest.Create(apiUrl + "/scaleoutgroups/" + scaleOutGroup + "/enlist");
>
> Why do we do this via http, why not just send a message directly to SC
> queue?
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/Particular/ServiceControl.Plugins.v5/pull/1/files#r20628283>
> .
>