SERVER-13635 Heap allocate the OperationContextImpl for each request

Allocating it on the stack resulted in each request on a connection having the
same OperationContext pointer. This can mask places where we stash the
pointer and use it after the original has be destroyed, because a new one has
been constructed in the same place. Switching to a heap allocation should
minimize this, especially when using the debug allocator.
SERVER-15111 use boost 1.49 compatible copy_file