distinguish structural unaries by 'is nodal' trait

People naturally expect structural unaries like subscripts to be flat
but non-structural unaries to recurse when hypered.  The best place to
hang this info is on the top-level function/method/proto that will be
passed to the hyper controller as object representing the operation
in question.  Subscripts and methods like .values are considered
"nodal".  For static functions on static shapes of known type, this
enables compile-time knowledge of what can be sent to the GPU.

Fixes #42