Out of Process Cassette.

Background
-----

Cassette is embarrassingly slow to load at app-start.  

It takes over 1 minute 20 seconds to do the following:

   *  Stop the w3wp process in task manager.
   *  hit the homepage (i.e. https://localhost)

Last summer we made this much much faster in the case where you are modifying files, but not recycling your app pools by keeping a static dictionary on the side.

Other Areas Investigated
---

In our brainstorming meeting we theorized that it was the mustache and less template generation that was the major bottleneck.  I attempted this and got it the point that the dependency graph was correctly generated, but the serving of the files wasnt quite right.  At this point I could evaulate the speed-up of lazy loading because serving the files is secondary.  I found that the app start time was decreased by around 1 minute.   While a nice gain, this isn't nearly fast enough to be acceptable. 

Change Summary
----

In progress.

Remaining Steps
---

   *  Review the code
   *  Pilot on the patient team
   *  Run in on demand.

Enabling Locally
---

By default cassette should behave exactly how it does now by using the InMemoryDependencyGraphInteraction.

To use the out of process version you need to run CassetteHostingApp.exe and put the following in your web.config:

```C#
<configSections>   
      <section name="cassette" type="Cassette.Configuration.CassetteConfigurationSection" />
  </configSections>

    <cassette 
          UseOutOfProcessCassette="true"  
          AppDomainAppPath="C:\src\zocdoc.web\zocdoc_web\ZocDoc.Web\"
          AppDomainAppVirtualPath="/"
          AssemblyPath="C:\src\zocdoc.web\zocdoc_web\ZocDoc.Web\Bin\ZocDoc.WebApp.dll" />
```