Add another CNetAddr constructor which accepts boost::asio::ip::address

By merging the independent BoostAsioToCNetAddr() function, this makes things a little bit more straightforward and clearer I think.

This is a renew of PR 4301 (https://github.com/bitcoin/bitcoin/pull/4301), the only change is to pre-declare the boost::asio::ip::address class instead of including asio.hpp in netbase.h to avoid increasing compiling time of those source files including it.

Signed-off-by: Huang Le <4tarhl@gmail.com>