text: Title: add_graph raises RuntimeError when parsing constant node
  Body: Hello
    I got "RuntimeError: VariableType::ID() not implemented" when parsing constant nodes in the computation graph. 
  
  code to reproduce the RuntimeError:
  ```python
  class SimpleModel(nn.Module):
      def __init__(self):
          super().__init__()
  
      def forward(self, x):
          return x * 2
  
  
  input = (torch.zeros(1, 2, 3),)
  
  model = SimpleModel()
  
  with SummaryWriter(comment='test') as w:
      w.add_graph(model, input)
  ```
  
  Stack:
  
      File "...tensorboardX\writer.py", line 419, in add_graph
          self.file_writer.add_graph(graph(model, input_to_model, verbose))
      File "...tensorboardX\graph.py", line 85, in graph
          list_of_nodes = parse(graph)
      File "...tensorboardX\graph.py", line 28, in parse
          attrs = {k: n[k] for k in n.attributeNames()}
      File "...tensorboardX\graph.py", line 28, in <dictcomp>
          attrs = {k: n[k] for k in n.attributeNames()}
      File "...torch\onnx\utils.py", line 444, in _node_getitem
          return getattr(self, sel)(k)
      RuntimeError: VariableType::ID() not implemented
      
  The stack shows that calling `Constant["value"]` will give `RuntimeError`
  str(n)  =  "%1 : Dynamic = onnx::Constant\[value={2}\](), scope: SimpleModel"
  n["value"] ==>  RuntimeError
  
  So is this a bug or an unimplemented feature of ONNX ?
  
  My temporary workaround for this is to set `attrs = str(n)` if `{k: n[k] for k in n.attributeNames()}` raises `RuntimeError`.
  
  pytorch = 0.4.0
  tensorflow = 1.8.0
  tensorboardX = 1.2
  