make reading the cache size a lock-free operation

and more granularity in arc_balance() to avoid a potential dead-lock in a specific corner case
(cache very small and very high rate of cache eviction because of the max size being reached)