Adds newNonLoopback which accepts an network interface as argument

This is needed to allow the user to specify the ROS Hostname.

An example application can be: Connect to a ROS robot through a VPN. The user would like to use the tunnel interface to create the nodes and master instead of just the first available interface.

The previous API is still present so this does not break existing applications. The diff in the PR looks more invasive that what it really is. The git of it is:

* Split getAllInetAddresses in two parts: First it collects the desired interfaces and then calls a new private method with returns all the inet addresses for that interface list.
* Split newNonLoopback consists of two parts: Get the IPs and filter them. The filtering is now down in a new private method.

These modifications allowed us to avoid code duplication when creating the new public newNonLoopback method which accepts and interface.