irq: bcm2835: Re-implement the hardware IRQ handler.

The justification for doing this is:
 * Simplify the decode and dispatch logic to make it easier to under-
   stand and maintain.
 * Re-arrange the hardware IRQ numbers to match the numbering scheme of
   the FIQ register.
 * Restore the flow of control that re-reads the base pending register
   after handling any interrupt. The current version handles all
   interrupts found in a GPU pending register before re-reading the
   base pending register. In the original Broadcom assembly code, there
   appear to be defect tracking numbers next to code inserted to create
   this behaviour.
 * DTS IRQ specifications can refer to either a shortcut bit in base or
   the GPU bits.  E.g. UART can be either <0, 19> or <2, 25>.
 * Add .irq_ack to the chip operations.

Signed-off-by: Craig McGeachie <slapdau@yahoo.com.au>
Corrections as per Stephen Warren's comments:
 * Restore table lookup for IRQ enable/disable.
 * Move magic numbers to defines.
 * Extract and document dt_to_internal_bank().
 * Correct #include line ordering.
 * remove .irq_ack from the chip definition.  It's unneccesary. The
   interrupt framework calls .irq_mask if it's not defined.
 * Various other layout fixes.
Merge branch 'topic/mailbox'
mbox: Move mailbox build to point before other devices which will depend
on it.

(cherry picked from commit e22583514dd16165060ebbbfb1ac5ee69a84c7d4)
bcm2835: thermal: Add support for the BCM2835 on-chip thermal sensor.

Signed-off-by: Craig McGeachie <slapdau@yahoo.com.au>
(cherry picked from commit b0ce69dae0bb78bfd62603f18aaa8a58b66bf20f)
bcm2835: thermal: Enable BCM2835 thermal driver by default.
bcm2835: thermal: Fix checkpatch.pl errors.

(cherry picked from commit f69bcb828c7ff45ccea06289a2467103d8384b90)
mbox: bcm2835: Extract properties message functions to common file.

Signed-off-by: Craig McGeachie <slapdau@yahoo.com.au>