Better handling of struct pointers

- `print structptr.member` now works
- attempting to print a pointer variable that is nil will no longer panic
- attempting to print a member variable of a nil struct will no longer panic
- added a bunch more tests for error conditions