Socket: Move protocol into the socket body (as private base class) and allow non-const protocol access