Add conversion to/from arrays (fixes #114, #99); refactoring and some comments

The conversion to array is done using `df.ToArray2D<T>` which is a generic method.
When the frame contains missing values then 1) for T=float or T=double we return
NaN automatically 2) for other T you have to use overload that takes default value.
In F#, `Frame.toArray2D` always returns `float` because that is likely the most
common use (for other types, function would look ugly).

This also adds some "XML" comments to a couple of other functions around.

I also moved the handling of `IBoxedVector` (74225ce54f094a6ee82cfc75e60c1da4751db2ba)
from `As<T>` to `changeType` function (which is used by `As` but also from other
places like the newly added conversion to arrays).