[WIP] Argument type validation with user-friendly error messages

In Py26, positional argument specifiers are required, so this must be

```python
msg = 'Expected type {0} for {1}, got {2}'.format(...)
```