Replace ports list mutex with R/W-lock.

* This alone does not yet help much against freezing: still too much
  contention on the lock, mainly caused by frequent calls to
  set_port_owner() which locks it for writing.
Move team port list protection to separate array of mutexes.

* Relieve contention on sPortsLock by removing Team::port_list from its
  protected items. With this, set_port_owner() only needs to acquire the
  sPortsLock for reading.

* Use lock striping to balance the traffic on the new team list mutexes.
  TODO: lock stripe size could be increased to 16 or more.

* Freezing gets noticeably less, but is still present.
Add another hash table holding the ports by name.

* Used by find_port() so it doesn't have to iterate over the list
  anymore.
Acquire sPortQuotaLock only when areas are added to the heap.

* sPortQuotaLock was acquired on every message send or receive and
  was thus another point of contention. By changing control flow
  and using atomic operations, it now only needs locking when the
  port heap is expanded.

* Further reduces freezing: now only occasional small hiccups,
  even in worst-case scenarios on test machine.
  Hiccups are caused by contention on the heap's page lock.
Use slab-based memory allocator for port messages.

* Removes contention on heap page lock, simplifies port memory
  management, sPortQuotaLock can be removed.

* Drawback: slab allocator currently doesn't support B_NO_LOCK.

* Freezes are now difficult to reproduce at all. Only saw a hiccup
  once so far.