graph/{multi,simple}: ensure implementations satisfy the interfaces they target
Created by: kortschak
There were a multitude of sins uncovered by looking into a simple fix to the multi.WeightedUndirectedGraph
type sent by @highway900.
These were missed because the types are not properly tested. This change fixes the problem he found and others that were identified by performing compile time type assignability tests that will stand in for proper testing in the short term.
I have moved the assignability tests into the packages proper to ensure they don't get missed in reading.
Please take a look.
Closes #576.