Merge pull request #70 from MatthewFluet/benchmark-infrastructure

Updates to benchmark infrastructure.

Highlights:
 * Add `even-odd.sml` benchmark that exercises mutual tail recursion.
 * Add `update-counts.sh` script to calculate appropriate benchmark iteration counts and update benchmark iteration counts so that all benchmarks run for at least 30 seconds.
 * Updates to benchmark driver program.
Refactor sequences

Primitive sequences are indexed by SeqIndex.int, normal sequences
are indexed by Int.int. Introduces primitive sequences earlier on in the
dependency chain.

Changes also make the Span exception more primitive, exposes the unfold
function for arrays and vectors further, and reorder the sequence interface
so that sequence0.sig/sequence.sig and slice0.sig/slice.sig can be read as
parallel corpuses.
Merge branch 'master' into refactor-arrays
Update MLtonVector.adoc

Update unfoldi to be correct and make sense from a type perspective
Update MLtonArray.adoc

Update unfoldi to be correct and make sense from a type perspective
Merge pull request #72 from robsimmons/refactor-arrays

Refactor array and vector implementation into a primitive implementation (using SeqInt.int for indexing) and a wrapper implementation (using the default Int.int for indexing).
Merge pull request #73 from robsimmons/unfoldi

Give MLton.{Vector,Array}.unfoldi a correct description in the guide.
winsock2.h should be included before windows.h (dependency problem)
Merge pull request #74 from suhorng/master

mingw32: <winsock2.h> should be included before <windows.h>
Merge pull request #75 from MatthewFluet/benchmark-infrastructure

More updates to benchmark infrastructure.

Highlights:
 * Make `update-counts.sh` script more robust.
 * Update `hamlet.sml` benchmark program to close input file after each loop.
 * Update `fft.sml` benchmark program to only invoke `test` function with power-of-2 arguments.
 * Update `model-elimination.sml` benchmark program to iterate `main ()` according to `doit` size parameter.
Add NSF CRI award as a homepage news item.
VectorInits via array initialization.
Replace uses of Layout.vector with (Layout.tuple o Vector.toList).

Preparing to change Layout.vector to print SML/NJ-style vector
literals.
Change Layout.vector to print SML/NJ-style vector literals.
Change Layout.array to print "#![1,2,3]" style array literals.
Add `val String.implodeV : char vector -> t`.
Update the WordXVector.layout function.

Update the WordXVector.layout function.  If the WordXVector's
elementSize is WordX.word8 and more than 90% of the characters satisfy
Char.isPrint, then display the WordXVector as an SML string constant
(with non-printable characters SML-escaped).  Otherwise, display the
WordXVector as an SML/NJ-style "#[0x0, 0xF]" vector literal.

The layout of large vector literals is not ideal, as the Layout
library (via the internal `sequence` function) with either place all
of the elemnts on the same line or all of the elements on separate
lines, whereas a "paragraph-fill" style would be preferable for large
vector literals.
Replace uses of (Layout.tuple o Vector.toList) with Vector.layout.
Update the WordXVector.layout function.

Update the WordXVector.layout function.  If the WordXVector's
elementSize is WordX.word8 and more than 90% of the characters satisfy
Char.isGraph orelse Char.isSpace, then display the WordXVector as an
SML string constant (with non-printable characters SML-escaped).
Update the WordXVector.layout function.

Update the WordXVector.layout function.  If the WordXVector is not a
reasonable string constant, then display the WordXVector as an
SML/NJ-style "#[0x0, 0xF]" vector literal.  Attempt to obtain a
"paragraph-fill" style by repeatedly packing adjacent pairs of
elements with Layout.mayAlign.