Don't add edges twice when converting from numpy or scipy

Previously in `from_scipy_sparse_matrix()` and `from_numpy_matrix()`, if
`create_using` were an undirected multigraph and the input matrix were
symmetric, the edge (u, v) and the edge (v, u) would be added
separately, thereby resulting in two parallel edges. This change makes
the function behave more intelligently: it now assumes that when the
input matrix is symmetric and `create_using` is undirected, the edge (u,
v) should be added only once.