add current dbcontext in to HookEntityMetadata when invoke hook

I Modified Line 170 
``` csharp
var metadata = new HookEntityMetadata(entityEntry.PreSaveState, this);
```
Add current dbcontext in to HookEntityMetadata when invoke hook.

So that i could do things like Instread of delete object by update field.

``` csharp
/// <summary>
/// IValidEntity
/// </summary>
public interface IValidEntity
{
    /// <summary>
    /// Gets or sets a value indicating whether this instance is valid.
    // </summary>
    /// <value>
    ///   <c>true</c> if this instance is valid; otherwise, <c>false</c>.
    /// </value>
    bool IsValid { get; set; }
}
```
```csharp
/// <summary>
/// Use Valid Flag Instead of Truely Remove Object
/// </summary>
public class UseValidInsteadOfDeleteHook : PreDeleteHook<IValidEntity>
{
    /// <summary>
    /// Hooks the specified entity.
    /// </summary>
    /// <param name="entity">The entity.</param>
    /// <param name="metadata">The metadata.</param>
    /// <exception cref="System.NotImplementedException"></exception>
    public override void Hook(IValidEntity entity, HookEntityMetadata metadata)
    {
        entity.IsValid = false;
 
        metadata.CurrentContext.Entry(entity).State = EntityState.Modified;
    }
 
    /// <summary>
    /// Gets a value indicating whether [requires validation].
    /// </summary>
    /// <value>
    ///   <c>true</c> if [requires validation]; otherwise, <c>false</c>.
    /// </value>
    /// <exception cref="System.NotImplementedException"></exception>
    public override bool RequiresValidation
    {
        get { return false; }
    }
}
```