More elegant domains.

Domains are now contained within solutions and keep track of conflicts. They auto grow and shrink upon assignment.