Feature/develop/2122 2133/listen on changes

This is an unfinished branch but looking for input on the direction of the changes. 

There are two detailed tickets that are required reading to understand the changes:

http://dev.deluge-torrent.org/ticket/2133
http://dev.deluge-torrent.org/ticket/2122

The code changes I have made are straightforward and don't affect the UIs at all but I have some unanswered questions...

 * Do we need to expose `listen_use_sys_port` and/or `listen_reuse_port` to the user? 
 * I included some basic logic to reuse port if only a single port range is supplied. This might be unwanted functionality.
 * Should we remove the port range as suggested in the tickets and only have a single port entry?
 * Do we also get rid of the random port option and simply generate a port if `listen_ports` is empty or zero?