Replace an assert(false) with abort()

If the compiler does not properly determine that a block of code after
a switch statement that covers all possible values of an enum is final,
then assert(false) does not properly terminate execution in all cases
and the compiler may still complain.  Just replace with abort() as we
do in many more places.
Detect and include termios.h for TIOCGWINSZ

Fixes a build problem in Illumos.
Remove stray :: for function call

The code in this file was originally taken from a C++ module and a ::
namespace prefix stayed in a usually-unused conditional branch.  Get
rid of it.
Handle the case where lchmod(2) is not defined

We had a check to verify that lchmod(2) worked and assumed that the
function existed (as in Linux the compiler complains about the function
being defined not being being supported).  However, lchmod(2) may not
be present altogether as is the case in Illumos; protect the call
accordingly.
Include sys/param.h for MAXPATHLEN in Illumos

Fixes some build problems in Illumos and Solaris.
Merge branch 'issue-97'

Various build fixes to let Kyua build under Illumos.

Fixes #97.