Stop persisting Socket/SSLSocket.

Summary: Make a parallel class hierarchy for all the non-smart allocated data members in File/Socket/SSLSocket.  Add a shared_ptr to File that points to a new'd instance of one of the parallel classes.  Use this data to construct persistent Sockets as needed.

This diff still needs more work but I thought I should submit something anyway.  I think the parallel class hierarchy and reconstruction of persistent sockets is a bit confusing.  I also haven't enabled smart allocation for Sockets yet since this breaks the debugger tests.  I'm still working on that.

Reviewed By: @edwinsmith

Differential Revision: D1746215