Add recognition algorithm for semiconnected graphs

Addresses #1108.

This is put inside `networkx.algorithms.components` only due to similarity to other `is_*connected` functions. No function is provided to compute the "semiconnected components" since there is no well-known definition AFAIK.