New files: sets.lua and lists.lua

New T-table compatible data structures that optimize for specific
situations.

Lists: For array-like structures (order preserving, sequential integer
keys), constant # time, faster than regular tables in almost every way.
Declared with L{...} or L(t)

Sets: Non-order preserving, constant membership-checking, insert and
remove, cheap unions and intersections. Faster than tables for those
operations, otherwise falls back to tables. Declared with S{...} or
S(t).

Casts between all three classes possible. T(S(L{1,2,3})) will return a
T-table containing 1, 2 and 3, but not in any defined order, since the
set may have jumbled it.

Also introduced the global class(o):
Returns "Table" for T-tables, "List" for lists, "Set" for set, type(o)
otherwise.