Frame removal test occurs alongside creation test
Frame.create() uses callback rather than returning value
frame.addElement()
assert.exception fails even when no message is provided
frame.addElement() fails fast if more than one element
assert.defined(): better failure messages
assert.type(): better failure messages
assert.objEqual()
assert.objNotEqual()
Initial QElement
assert.match()
QElement.toString() renders the element
Initial stab at Frame.getElement() (doesn't work)
Frame.addElement(): returns correct element
Frame.getElement(): retrieves element by ID
Frame.getElement() retrieves elements by arbitrary selector
Frame.getElement() checks for exactly one result
Roadmap updates
INTEGRATE: frame.addElement() and frame.getElement()

* dev:
  Roadmap updates
  Frame.getElement() checks for exactly one result
  Frame.getElement() retrieves elements by arbitrary selector
  Frame.getElement(): retrieves element by ID
  Frame.addElement(): returns correct element
  Initial stab at Frame.getElement() (doesn't work)
  QElement.toString() renders the element
  assert.match()
  Initial QElement
  assert.objNotEqual()
  assert.objEqual()
  assert.type(): better failure messages
  assert.defined(): better failure messages
  frame.addElement() fails fast if more than one element
  assert.exception fails even when no message is provided
  frame.addElement()
  Frame.create() uses callback rather than returning value
  Frame removal test occurs alongside creation test