Package garbage collection policy parameters into a single structure.

The garbage collection policy had been determined informally.  This change
defines the garbage collection behavior in a centralized location making it
clear how the system will behave when requesting a garbage collection in one
of the four common situations.  This change is required to allow us to change
the policy for an explicit garbage collection.

In addition, this change hoists out the thread priority toggle from the
main garbage collector routine into two simple subroutines making this
it much easier to read and spot behavior differences.

Bug: 3379352
Change-Id: If0d7d9ef337819598fb6e268f7a127f2bae23580
7 files changed