Add structured graph fuzzer
CC @fcoUnda  I like it! :tada: 
Adds a fuzzer that creates computation graphs with a focus on making graphs that run proper. This is in comparison to the existing graph fuzzers (the ones in the same file) which struggle with coming up with graphs that are runnable. I think the existing graphs struggle with two issues:
- reference names are just arbitrary strings, so it's likely the fuzzer will not have references correct
- am not sure if ops are strings in the structs, but if so, the existing fuzzers may have a lot of ops that are invalid in that it will be a fuzzer-generated string (likely not match with the ops that are available)

This fuzzer overcomes these by ensuring references always happen to names that are affiliated with nodes in the graph and also ops that are available as ops in tensorflow. Currently, it does have limitations in that not all graphs produced by this fuzzer will be valid graphs to run. However, many of them will and I've ensured coverage happens for a lot of the ops defined in the ops vector of the fuzzer.

There are several areas it can be improved and it would be nice to do so, and I've left some comments in the code about this. It would be nice to iterate on these improvements though.