Clone packets with copy-on-write semantics

Create a clone of a packet with minimal overhead by sharing all
buffers with the original packet.  Individual buffers are copied
before they are modified.
Add Murmur hash function

A simple framework for hash functions is provided by lib.hash.base.
Two variants of the "Murmur" class of hash functions is provided by
lib.hash.murmur.
Add a pure Lua implementation of a Bloom filter

lib.bloom_filter provides a generic Bloom filter based on the x64_128
variant of the Murmur hash function.
Add class method to check for multicast MAC address in lib.protocol.ethernet
Add apps to provide multi-port Ethernet switches

The abstract class lib.bridge.base provides a constructor for a
multi-port Ethernet switch with split-horizon semantics.  The subclass
lib.bridge.flooding implements a simple flooding bridge while
lib.bridge.learning avoids flooding through MAC learning via Bloom
filters.
Merge pull request #333 from alexandergall/learning-bridge

Learning bridge based on Bloom filter
Adds a -R option to Snabb Switch which starts an interactive
Read-Eval-Print-Loop.
[bench_env] Use `run_nfv' where applicable.
[bench_env] Use Bash's `${VAR?}' syntax before using user
defined environment variables.
[bench_env] Pass nfv config to `run_nfv' in the individual
scripts.
Performance tweaks in core/timer.lua

The definition of call_timers() in core/timer.lua is moved out of
run_to_time() to avoid generation of the non-compileable bytecode
UCLO (bytecode 51 in the current version of LuaJIT).

Wrapping the call to ffi.C.get_time_ns() in run() with tonumber()
avoids the allocation of a cdata object that is difficult for the sink
optimizer to remove.
Merge pull request #337 from alexandergall/perf-tweaks-2

Performance tweaks in core/timer.lua
Merge pull request #334 from eugeneia/repl

Adds a -R (REPL) option to Snabb Switch
Merge pull request #328 from eugeneia/bench_env-regression

Fix bench_env regressions and improve error reports