Abort width inference early when possible

While the full width inference algorithm is O(n^2) in the worst case,
that's really uncommon.  Most of the time it will just bail out after
a single loop because there's no work to do at all.

This adds an early out to avoid the worst-case behavior in broken
graphs.
Be more verbose when a graph can't be parsed

This now provides a whole lot more information to the user when graphs
cannot be parsed, rather than just bailing out.
Add node::const_int()

This parses a string into an integer and returns that value.  It'll
bail out on non-const nodes.  The general idea here is to support
optimizations based on constant values.
Whitespace changes

It appears I indented some code poorly in node.h++