Solaris support regarding setecho/setwinsize, new argument echo=False

This merges more-exacting-which #70, replwrap-test-fixes #71, and interact-does-not-detect-eof #72, required for passing tests on Solaris. If these three are merged first, I should hope this will be more brief !

All of the feedback previously provided has been integrated. Additional changes of note:
- timing condition around "child_name = os.ttyname(tty_fd)" has been resolved with a 100ms poll up to 1 second.
- your nice assert_raises_msg() class has been superseded by assertRaisesRegexp, as it was failing intermittently when integrated with py.test, I suspect because py.test output is so large, decorated, and possibly truncated?
- PS1 and PS2 are forcefully set in test_replwrap, I happen to use a silly dos-prompt look-alike on mac which doesnt match the default. This certainly helps. "(pexpect)C:\Users\jquast\Code\pexpect>"
- regarding test_isalive.py, for a very peculiar reason, terminate(force=True) is required on Solaris *only while running from within cron(1)*. Very peculiar.

Thanks for your review
This checks the errno, but then does the same thing (ignore the error) whatever it is. Should this be:

```
if err.args[0] != ENXIO:
    raise
```

Also, ENXIO isn't in scope - it should probably be `errno.ENXIO`.