Simpler free list mgmt WIP

Backed out complex free list management code based on spinlocks. That
approach could cause many threads to spin out of control if a thread
grabbed a lock in the free list and was descheduled for any reason.
Using now simple LIFO lock-free structure for list, with deletions just
marking the node as deleted. That means that grabbing a free page may
involve removing a potentially long list of nodes marked as deleted. But
there should be ways to improve on that later.