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.
New fast multiply-shift linear indexing algorithm.

julia> include(joinpath(JULIA_HOME,"../../base/array/view.jl"))
benchmark (generic function with 4 methods)

julia> results = benchmark();

julia> data = squeeze(mapslices(median,results[:,:,2:3]./results[:,:,1],2),2)
10x2 Array{Float64,2}:
  6.64002     2.99833
  6.69273    16.3886
  8.59361    29.9632
 10.4218     48.2432
 12.1854     65.8061
 13.2618   2357.6
 16.1612   2534.79
 17.3616   2367.67
 17.1718   2754.53
 20.8452   3254.62

julia> data./[1:size(data,1)]
10x2 Array{Float64,2}:
 6.64002    2.99833
 3.34636    8.19429
 2.86454    9.98773
 2.60545   12.0608
 2.43708   13.1612
 2.21029  392.934
 2.30875  362.113
 2.1702   295.958
 1.90797  306.059
 2.08452  325.462