Adding events for use by Courier/UaaS

Moved all logic of PartialViewTasks and PartialViewMacroTasks to a base class as the only difference was 3 variables
Added events: PartialView(Macro): Create, Save and Delete
Added events: Template: Save (there's already a legacy event, this is a new one to transition to)
PartialViewMacro.ascx.cs was adding ".cshtml" just so that it could strip it of again, crazy
Looks like the MemoryStream is never disposed. I'd do something like this

```
using(var stream = new MemoryStream(Encoding.UTF8.GetBytes(content)))
{
    partialViewsFileSystem.AddFile(partialView.Path, stream);
}
```