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
I'm removing this exception handling/loop. I can't seem to reproduce the issue. How odd!

I most certainly reproduced it at the time, the "1 in 10" statement was made by a simple looping of spawn(). I've upgraded my VMWare Host OS major (to osx "Mavericks") since then, and I'm worried its affected this timing condition of the Guest OS (SunOs).

If somebody can report their child process raising OSError, ENOTTY then we'll coordinate with that person's environment then.