Refactor nvhost_gr3d_init()

A lot of the initialization sequence is composed of long sequences of
writes of the same value. All of these can be replaced by loops to
reduce the function size and make it clearer what happens.

Signed-off-by: Thierry Reding <thierry@gilfi.de>
Add missing variable
Compact register-init a bit
Add a function to read 3d-registers
Add a function to setup the viewport registers
Add a function to setup the scissor registers
Add a function to control the line-width
Multiple draws

Perform two draw-calls, one for each half of the framebuffer with
different draw-modes.

Use lines for one of them, so we can show that we can control the
line-width.