Both client & server work as expected now

Currently, only Linux server are tested, Windows server probably would
work, maybe with some minor fixes. Both Linux & Windows clients work
as expected, except that Windows clients cannot set the IP address of
the TAP-Win32 adapter, this problem will be fixed later.

There is a major design flaw: currently, the server assumes that a
client's UDP address never changes as long as hearbeats are sent between
the server and the client. But the assumption is wrong in may cases, for
example, buggy NAT devices, heartbeats dropped by firewall unexpectedly.
All these situation may cause the UDP address of a client to change, and
result in server dropping client packets siliently, finally, the end user
must restart their client frequently.

This problem stated above can be solved by assigning each client a
token during session starting phase, and use the token as the unique
identifier of a client. This solution would require major rework of
both client & server code, so the implementation is postponed.
added android build support

program builds and links on android with standalone toolchain,
but definitely not going to work without a rooted device.