code: function describeElement(elem) {
  	  if (!elem || !elem.tagName) {
  	    return null;
  	  }
  	  var out = {}, className, key, attr, i;
  	  out.tagName = elem.tagName.toLowerCase();
  	  if (elem.id) {
  	    out.id = elem.id;
  	  }
  	  className = elem.className;
  	  if (className && (typeof className === 'string')) {
  	    out.classes = className.split(/\s+/);
  	  }
  	  var attributes = ['type', 'name', 'title', 'alt'];
  	  out.attributes = [];
  	  for (i = 0; i < attributes.length; i++) {
  	    key = attributes[i];
  	    attr = elem.getAttribute(key);
  	    if (attr) {
  	      out.attributes.push({key: key, value: attr});
  	    }
  	  }
  	  return out;
  	}
docs: Input: a dom element
  Output: null if tagName is falsey or input is falsey, else
  {
  tagName: String,
  id: String | undefined,
  classes: [String] | undefined,
  attributes: [
  {
  key: OneOf(type, name, title, alt),
  value: String
  }
  ]
  }