Smartdict fixes

### Changelog
* Fix serious bug that caused `smartdict`s to share state.
* `getKey`: Default argument is now used.
The `be.equal` syntax is ambigous; it probably means the same as just `equal`. Compare:
```bash
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sure
>>> (1).should.equal(1)
True
>>> ([]).should.equal([])
True
>>> ([]).should.be([])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/dist-packages/sure/__init__.py", line 423, in __call__
    assert self._ab.obj is other, "{0} should be the same object as {1}, but it is not".format(self._ab.obj, other)
AssertionError: [] should be the same object as [], but it is not
>>> ([]).should.be.equal([])
True
>>>
```