define monomials using dictionaries

Because it seems a little more readable to say Monomial({'x': 1, 'y': -1}, 5) than Monomial(['x', 'y'], 5, [1, -1])