cache: convert to a N-way set-associative cache.

The old cache was direct mapped and this was not ideal.  The cache is
now N-way set-associative using a pseudo-round-robin replacement policy.
A counter is advanced on every access and that is used as the victim
select for line fills and evictions.

This new configuration means that we can have a 4-way set-associative
cache with 4KB pages for a total size of 16KB without having to worry
about page colouring in the OS.  With a direct-mapped cache this would
be a problem for caches of greater than 4KB in size.