FIX: Fix spatial object node

The node had a simple pointer on a spatial object which would in no way
modify the polydata. This isn't really robust a a node could only ever be
updated from a TRE file when it was read from file.
Transfering the code that was in the storage node for reading the polydata
of the tube allow the node to update itself.
ENH: Improve logic methods

Multiple improvements here:
 - Add a copy method so we can copy a spatial object from a node to another
from python.
 - Make the filename optionnal for adding a spatial object node so this
method can be used to create nodes with all their associated display nodes.
 - Add the AddDisplayNodes method to allow user to easily create the
necessary display nodes along side a spatial object node.
Merge pull request #302 from vovythevov/fix-spatial-object-node

Fix spatial object node