base/array/view.jl: some very basic array view sketching.

- only supports Vector{T} as the data array
- multidimensional indexing via an arbitrary linear transform
- linear indexing compatible with the multidimensional indexing
base/array/view.jl: manually inline and simplify linear view2data.
base/array/view.jl: tweaking for beauty.
[su]div_int intrinsics: these are really important and were slow.

I'm not even sure why we were generating code to check for a zero
denominator – this seems to still raise an exception as expected.
The other special case just isn't worth it to emit more than one
instruction for div – and div/rem since x86 does both together.
base/array/view.jl: factor out the really basic index computation.

This version lets you see how tight the code gen can be without the
gratuitous (now-removed) checks from the div intrinsic and the undef
checks from loading the fields from the ArrayView structure:

	julia> code_native(view2data,(Int,(Int,Int),(Int,Int)))
		.section	__TEXT,__text,regular,pure_instructions
	Filename: /Users/stefan/projects/julia/base/array/view.jl
	Source line: 17
		push	RBP
		mov	RBP, RSP
	Source line: 17
		mov	R8, QWORD PTR [RSI + 16]
		mov	RSI, QWORD PTR [RSI + 24]
		mov	RAX, QWORD PTR [RDX + 16]
		mov	RCX, QWORD PTR [RDX + 24]
		mov	RCX, QWORD PTR [RCX + 8]
		dec	RCX
		imul	RCX, QWORD PTR [RSI + 8]
		mov	RAX, QWORD PTR [RAX + 8]
		dec	RAX
		imul	RAX, QWORD PTR [R8 + 8]
		add	RAX, RDI
	Source line: 19
		lea	RAX, QWORD PTR [RCX + RAX + 1]
		pop	RBP
		ret

	julia> code_native(view2data,(Int,(Int,Int),(Int,Int),Int))
		.section	__TEXT,__text,regular,pure_instructions
	Filename: /Users/stefan/projects/julia/base/array/view.jl
	Source line: 23
		push	RBP
		mov	RBP, RSP
		mov	R8, RDX
	Source line: 23
		lea	RAX, QWORD PTR [RCX - 1]
	Source line: 25
		mov	RCX, QWORD PTR [RSI + 16]
		mov	R9, QWORD PTR [RSI + 24]
		cqo
		idiv	QWORD PTR [RCX + 8]
		mov	RCX, RDX
		mov	RDX, QWORD PTR [R8 + 16]
		mov	RSI, QWORD PTR [R8 + 24]
		imul	RCX, QWORD PTR [RDX + 8]
		add	RCX, RDI
		cqo
		idiv	QWORD PTR [R9 + 8]
		imul	RDX, QWORD PTR [RSI + 8]
	Source line: 28
		lea	RAX, QWORD PTR [RDX + RCX + 1]
		pop	RBP
		ret
base/array/view.jl: view construction with ranges a la slicing.

Also support views into multidimensional arrays. This wasn't all that
annoying, actually; I realized I could just add an `m` parameter.
base/array/view.jl: use 1-based origin instead of 1-based offset.
base/array/view.jl: simpler size init; drop gratuitous type params.
base/array/view.jl: an view of a view is a view (dims must match).
base/array/view.jl: linear v2a using only div, not precomputed.