Ajax cart fixes

Mostly a refactor of existing code.
- Cleaned up colours in stylesheet with helper function for determining font color based on background
- Consolidated JS, mostly surrounding the modal handling and sizing
- Minor update to cart template (product title separate from variants)