Implement a new version of select() API

This patch introduces backward-incompatible changes to select()
and adds couple new methods:

  * index:select(key) -> tuple, tuple, ... was changed to
    index:select(key, opts = {}) -> { tuple } where opts can be

       - iterator = ALL if key == nil or key == {} | EQ otherwse
       - offset = 0
       - limit = unlimited

  * index:get(key) -> tuple | nil | error on more than one tuple
    a wrapper for select() to get the single tuple

  * space:put(tuple) -> tuple
    an alias for space:replace() (to provide integrity with get())

Test suite, box.space and box.net.box API were also updated to
meet changes.
select-new-api-v2: review fixes
Reimplement select() using FFI
Fix typo in queued execution: fiber id was used wrongly
Replace index:iterator() API with Lua-compatible pairs()

This patch converts space:iterator() to be compatible with Lua
for-in loop conventions. The most important change is that
generating function now returns *state* as its first result:

    for _state, val in space.index[0]:pairs() do work(val) end

New syntax follows the best practices of Lua community and makes
index API to be more consistent with pairs() and tuple iterators.

This change partially restores pairs() logic as it was implemented
before 4987561559388c8c5d672d613d17dbf6cd2f890f.
[gh-162] Move sha1 library to third_party and add to libmisc.
Change Tarantool master port to 3301
fixed gh-140 in first approximation
test for gh-140 added
Optimize tuple encoding in msgpackffi
Replace index:eselect() with index:select()
gh-140 likely final fix
Merge remote-tracking branch 'origin/stable'

Conflicts:
	src/box/tuple.cc
	src/box/tuple.h
	test/box/lua.result
	test/box/lua.test
Merge branch 'eselect-select'
Merge branch 'tuple-msgpack-fix'
LuaFun integration
Replace msgpack.next() with msgpack.decode()
Fix out of source build broken by LuaFun integration
gh-162, gh-163 Authentication and access control

Add new system spaces _user and _priv to store users,
their passwords and their privileges.
Implement an authentication request in iproto protocol

Add a system space _func to store presistent information
about Lua functions. A function is now a subject
to ownership and privilege control.

Use MySQL-style sha1-double-hashing authentication by default.

Implement new Lua functions:

box.session.su()
box.session.uid()
box.schema.user.create()
box.schema.user.drop()
box.schema.user.grant()
box.schema.user.revoke()
box.schema.func.create()
box.schema.func.drop()

Store space creator in space definition.

What this patch doesn't implement:

- privilege checks in replication
- authentication of replication slaves
- exhaustive test coverage
Ignore fun.lua.c