Tests needed:
```
    em.disconnect(e)
    em.connect(e, after='a', before='f', position='last')
    assert_equal(('a', 'b', 'c', 'd', 'e', 'f'), tuple(em.callback_names))
    em.disconnect(e)
    em.connect(e, after='d', before='f', position='last')
    assert_equal(('a', 'b', 'c', 'd', 'e', 'f'), tuple(em.callback_names))
    em.disconnect(e)
    em.connect(e, after='d', before='f', position='first')
    assert_equal(('a', 'b', 'c', 'd', 'e', 'f'), tuple(em.callback_names))
    em.disconnect(e)
    em.connect(e, after=[], before='f', position='last')
    assert_equal(('a', 'b', 'c', 'd', 'e', 'f'), tuple(em.callback_names))
```