Reduce directory level
Define the framework to implement socket option.

* Check type correction at compilation time.
* To implement conversion to string for binary option.
Remove old options
Make template name and usage for shared_ptr more readable.