Make the Port an Option to allow for stealing

By making the port an option we can safely steal the port and let it be owned by a single task. The window handle can then be safely shared using MutexArc if the user needs to.