feat(eq): implement overloaded equality

Closes #17