Update doc
SessionSerializer: Truly unique URIs

Before, only spent uris where sanitized not to be contained within
remaining uris. Change this so that each uri in the
union(remaining,spent) get saved once at most.
The order of the uris will won't be changed, with remaining uris going
first followed by spent uris.

Also avoid copying the uri std::strings around during dupe checking,
usually resulting in better performance regarding CPU and space.
Update doc
Pass A2Gid by value, since it is uint64_t
Improvements to --follow-torrent=false documentation.
Do the same doc improvements to --follow-metalink
Improve peer bitfield and piece stat update

On HAVE message reception and PIECE message transmission, update peer
bitfield and piece stat only if current peer bitfield indicates it
does not have the piece.
Revert 9eea959 only the parts which affect src/BtPieceMessage.cc

This is because we are not sure that peer has a piece just sending off
its block. It should be notified by the peer.
Send HAVE message to the peer which the piece is downloaded from

Historically, aria2 did not send HAVE message to the peer which the
piece is coming from, thinking it is obvious that the peer knows we
have the piece. But it is not obvious if one piece is download from
more than 1 peers (e.g., end game mode). So it is better to send HAVE
to all peers connected.
Join URI on redirect
Rewrite URI path component normalization
Require -std=c++11 and use std::shared_ptr instead of SharedHandle
Fix mingw32 compile error
Use std::unique_ptr instead of std::shared_ptr
Cleanup a2functional.h

Remove mem_fun_sh in favor of std::mem_fun. Remove unused functions.

Use std::mem_fn instead of mem_fun_sh
Remove auto_delete in favor of std::unique_ptr
Remove forEachMemFunSH in favor of for loop with auto
Use std::mem_fn instead of std::mem_fun
Use std::unique_ptr in SingletonHolder
Remove Triplet, use std::tuple instead