Core Cleanup

The node initialization code in the `core` package was a little wonky. Most of the properties of the main `IpfsNode` struct were never being set (even though we were using the services). This PR makes the `IpfsNode` services (`Routing`, `BitSwap`, `Swarm`, etc.) are accessible from other subsystems.

This PR also lets nodes initialize without an address set, which just means the swarm module will not be listening for connections.