Support multiple parents of a commit

Add `parents` keyword parameter to #commit and rewrite #history

The parents parameter should allow merge commits to be created.

Repository#history now properly returns all commits without duplicates. It's now essentialy a BFS.