Add AllocateArray IR node

The AllocateArray IR node represents local array allocation. 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 local_array.new

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

from numba import njit, local_array_types

@njit
def f()
    # a is a local array of 10 floats
    a = local_array.new(10, types.float64)
Add typing for AllocateArray IR node

This works in a similar way to the typing for Intrinsics. An
additional registry, called specialdecl is added for the
local_array module.
Add lowering for AllocateArray 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.