ivory lang: introduce IvoryZeroVal typeclass, refactor IvoryZero instances

Previously, IvoryZero of the numeric types depended on the Num constraint
for the generalized "fromIntegral 0" value. This made it impossible to derive
IvoryZero for any newtypes on numbers that did not also have Num.

So, we now use an IvoryZeroVal class for all zeroable numeric types, which
can be safely derived by newtypes.
ivory bitdata: BitRep and newtypes now derive IvoryStore, IvoryInit, IvoryZeroVal

this permits the user to store bitdata in refs (and create uninitialized local refs)
which is generally safe. using an uninitialized ref is unsafe, as usual
ivory: add comment to interface & ast
ivory-backend-c: support comments against a yet-nonexistent language-c-quote 0.7.8
ivory-opts: comments are an opt no-op
ivory-examples: test comments in fibloop
update readme
ivory-opts: bugfix Comment case in AssertFold

cabal output is so big & gross I missed the warning
ivory-hw: emit basic comments for register read/write/modify
cabal: rename file.
parser:  polymorphic array sizes.
parser: auto generate Ivory modules based on the module name.