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)

@psquickitjayant I  am already checking for null in my code but the red section got injected in the middle for this diff. Look at line 59 of the green section and there is an if check on the ndcStack. Also, I modified the testing app to create a log entry without being in the stack to test this exact scenario.

@mostlyjason It doesn't need to throw an exception. I'd suggest looking at the raw code instead of the diff and it will make more sense why it won't throw an error. You can run the tester app and you can see it works with and without NDC being used without any errors.