Added OS.getPID, .uName and .getHostByName.

Note: OS.uName currently is not supported in Windows.
Changed flow of GetHostByName to ensure destruction even on exception.
OS: Fix connect(), and implement read(), write() & send() on compat socket.

These are needed for Open.socket to work correctly...
Tiny fix in build scripts.
Merge pull request #80 from kennytm/os-compat-socket

Fix OS.connect, and implement read(), write() & send() on CompatTCPSocketClass
Revert f508bcf with workaround using explicit instantiation.

(Only tested on OS X 10.8.)

Since the problem is undefined symbol in coremodules.o, we could just
explicitly instantiate LString<unsigned char> there. `vmtest` works fine
after this.

Re-enabled string tests and ByteString.stringSearch.
Pickle: Support CompactString.
Add some properties related to GC and memory.
Add option --max-memory=X to specify the heap size.

X is a positive number expressed in MegaBytes.
Merge pull request #84 from kennytm/bytestring-search

Re-enable string tests and ByteString.stringSearch on OS X.
Fix issue #85: Serialized code area size is doubled.

Cause: `buildTupleDynamic()` expects the number of elements, but
CodeArea::_size is the byte-size of the byte codes, which is 2x the array
length if passed as is.
Merge pull request #87 from kennytm/issue-85-2x-codearea-size

Fix issue #85: Serialized code area size is doubled.
Merge pull request #86 from sjrd/topic/option-for-max-memory

Add option --max-memory
Merge pull request #88 from kennytm/pickle-compact-string

Pickle: Support CompactString.
Fix #83: custom color in Tk/QTk

'#' is the virtual concatenation of 0 virtual strings,
and hence represents the empty virtual string.

"#" is a virtual string with one character, #.
Make ReflectiveVariable implement BindableReadOnly.

This is needed for distributed port to work. In the DSS, when we share the
stream, we would make the stream become a reflective variable to also
share the changes to other sides. But a ReflectiveVariable was not a read-
only variable, so calling `sendToReadOnlyStream` will crash with an
unexpected type exception.

This commit makes ReflectiveVariable also BindableReadOnly, by implementing
`bindReadOnly()` to do the reflective bind. This allows the port to work
and also distribute the changed stream.
Reflection: Added `Reflection.isReflectiveVariable`.

This checks whether a value is a reflective variable. This is the only way
to distinguish between a reflective variable and other variables without
waiting. Reflective entities can be checked using the existing method
`{Value.type V} == reflective`.
Make ReflectiveVariable.bindReadOnly send a different message than bind.

(Fix comments in PR #94.)
Merge pull request #94 from kennytm/make-reflvar-bindablereadonly

Reflection extras
Merge pull request #79 from kennytm/some-os-additions

Added OS.getPID, .uName and .getHostByName.