Added log4net ThreadContext Context Stack support 

log4net supports  a concept of using stacks in the code so each log statement doesn't have to include contextual information. For example, if processing everything for a user, the block can be wrapped with a stack value with a UserID. 

     using(log4net.ThreadContext.Stacks["NDC"].Push("UserID: 323-3223-dcs3234324"))
     {
          log.Info("This message will get the stack");
           log.Error("So will this message");
      }

http://logging.apache.org/log4net/release/manual/contexts.html

Once this is merged in please update your NuGet feed. 

If someone doesn't use NDC stacks then they won't get an output. I tested this on my log4net account and it worked well.  Notice in the below screenshot the "oops" exception doesn't have an ndcStack value but the entry after (above) does. 

![image](https://cloud.githubusercontent.com/assets/1039795/5332021/368b95cc-7dfa-11e4-9654-00b077e5202e.png)

This also supports multiple stack values as I added to the test.

![image](https://cloud.githubusercontent.com/assets/1039795/5332023/709928b0-7dfa-11e4-9b59-99d2c4ef5569.png)

@pmendozaDetectent I am talking about line #64. Why do you need to check for null here. Are you overriding ToString() somewhere for Stacks. As you have already added a null check at line #61. It think we can remove the null check at line #64