Merge pull request #59 from gubatron/master

make 'socket' protected on MulticastReceiverImpl.java
Optimization of ServerClientTokens.getHttpToken.
Avoid use of replaceAll (regex based) and use StringBuilder char methods when possible.
Refactors to minimize the use of URI.create.

In the current implementation of Namespace there's a number of
calls to URI.create() which result in an unnecessary encoding and decoding
of URI/URL objects.

We have refactored and enhanced the Namespace class so that it will return Uri paths
as strings (getDescriptorUriPath(Device device),getEventCallbackUriPath(Service service))

We've done this to avoid the use of URI.create, and instead use a more explicit URL constructor
that avoids unnecessary rencoding operations.

Wherever you needed to use Location before you had to pass paths as URI objects which had to
be created using Namespace methods, these methods would unnecessarily build URI objects the
slow way (parsing, re-encoding)

RemoteGENASubscription and SendingNotification were the only classes affected by the api changes.
Make header key normalization optional.

Calls to the normalize() function are expensive on the android platform,

We've overriden the OutgoingDatagramMessage upnp headers do away with
the expensive normalize() calls.

This change depends on a change that will be submitted to the seamless repository on
org.seamless.http.Headers (so that Header normalization is optional)
https://github.com/4thline/seamless/blob/master/http/src/main/java/org/seamless/http/Headers.java
Avoid expensive String object creation on logging calls.
These logging calls in critical moments were using far too much cpu.
(and one left over change related to Namespace,Location refactor)