Improve RawSocket element.
* Allow for sending broadcast packets.
* Allow for creating raw sockets for abitrary ip protocols.
* Use NamedIntArg for parsing the protocol.
Merge pull request #96 from sascha-jopen/rawsocket

Improve RawSocket element.
Merge branch 'master' of https://github.com/kohler/click
Fix multithread bug: Reset _run_args, etc.

Problem: Imagine executing Script.run for a Script that returns
$1 (i.e., its first parameter). $1 is a substring of _run_args.
_run_args is a member of Script. Script.run is multithread-safe
(it's an "exclusive" handler, so at most one Script.run can run
at a time). But we didn't reset _run_args at the end. So: the
return value of Script.run shared memory with Script::_run_args.
The return value is manipulated by clickfs, and eventually
dereferenced and freed, OUTSIDE the configuration lock. But
Script::_run_args is reset the next time Script runs, which
might be concurrent! Crash.

Derrick Pallas reported the problem and helped narrow it down.
Add more String methods for managing sharing.

- String::data_shared: is_shared is a better name.
- String::is_stable: add it.
- String::unique: returns a new copy of *this if *this
  is_shared() && !is_stable(). (Maybe unique_or_stable
  would be a better name?)
Fix the shared-string handler problem better.

This fix would catch problems in other exclusive handlers.
StoreIPAddr: Accept other OFFSET arguments than 'src'.

Signed-off-by: Eddie Kohler <ekohler@gmail.com>
Clickfs: Move read-handler preparation into its own function.

A version of this was done at Meraki.
Clickfs: Simplify flag handling, kill dead flags.
Clickfs: Add read-parameter support by opening with O_RDWR.

Again, original version from Meraki.
Merge branch 'master' of https://github.com/kohler/click