Add StackArray IR node

The StackArray IR node represents array allocation on the function
stack. It is initially similar to the Intrinsic node, and provides
the args and kws properties in order to match the interface of the
Instrinsic class.
Add macro for stack_array.new

This macro expands to the StackArray IR node, and is intended to
be used within a jitted or njitted function like so:

from numba import njit, stack_array, types

@njit
def f()
    # a is an array of 10 floats on the stack
    a = stack_array.new(10, types.float64)
Add typing for StackArray IR node

This works in a similar way to the typing for Intrinsics. An
additional registry, called specialdecl is added for the
stack_array module.
Add lowering for StackArray IR node

This is a basic implementation of lowering which is hard-coded to
work with 1D arrays at present. It creates an ArrayTemplate
structure and populates its fields, and allocates space for the
data on the stack using an alloca instruction.
Add rudimentary tests of stack arrays