Add a layer of SSL to a transport.
| Parameters | transport | The transport which will be modified.  This can either by a FileDescriptor
or a FileHandle.
The actual requirements of this instance are that it have:
  - 
    a 
_tlsClientDefault attribute indicating whether the 
    transport is a client (True) or a server 
    (False)
   
  - 
    a settable 
TLS attribute which can be used to mark the 
    fact that SSL has been started
   
  - 
    settable 
getHandle and getPeerCertificate 
    attributes so these ISSLTransport
    methods can be added to it
   
  - 
    a 
protocol attribute referring to the IProtocol
    currently connected to the transport, which can also be set to a new IProtocol
    for the transport to deliver data to
   
  | 
 | contextFactory | An SSL context factory defining SSL parameters for the new SSL layer. (type: twisted.internet.ssl.ContextFactory) | 
 | normal | A flag indicating whether SSL will go in the same direction as the 
underlying transport goes.  That is, if the SSL client will be the 
underlying client and the SSL server will be the underlying server. 
True means it is the same, False means they are 
switched. | 
 | bypass | A transport base class to call methods on to bypass the new SSL layer (so 
that the SSL layer itself can send its bytes). (type: type) |