Fix bug where attributes wouldn't be returned.

Copy and paste fail: first param of first function was being gobbled up.
Fix bug preventing override of attr in apply().
Remove `strict` param.

An exception is now thrown by default if the attribute does not exist,
unless `default` is specified.

This matches the behaviour of Python's builtin getattr and others.
Add ability to set values.

Also add getstrattr and setstrattr and update documentation to show this
is the primary way of using.