Add IntPromote behavior

Handles long, string, and unicode conversions.

```
from atom.api import Atom, Int

class Test(Atom):
    i = Int(strict=False)
    
t = Test()
for value in [0, long(10), '1', u'20']:
    t.i = value
    assert t.i == int(value)
```