dbclient: Python layer over ovsdb command line utilities

Signed-off-by: Min Chen <minchnew@gmail.com>
Changed ovsdb-client execution errror pattern.

Fetched rows might contain keyword 'error'. This patch search for '"error"'
instead.

Signed-off-by: Min Chen <minchnew@gmail.com>
Replace ugly subprocess.Popen code blocks with dbclient module calls.

Call MySQLdb-like APIs to fetch data from ovsdb-server (on top of
'ovsdb-client' and 'ovs-vsctl'.

Signed-off-by: Min Chen <minchnew@gmail.com>
Implemented get_sflow.

get_sflow is done. Be very careful with colunm data types (set, map
and uuid).

Signed-off-by: Min Chen <minchnew@gmail.com>
Implemented get_netflow.

get_netflowf done. Be very careful with code copying. Unexpected errors
might pop out if you aren't careful enough.

Signed-off-by: Min Chen <minchnew@gmail.com>
Implemented get_mirrors.

get_mirrors done. If a bridge doesn't contain any mirror record, it
displays as an empty list.

Signed-off-by: Min Chen <minchnew@gmail.com>
Implemented get_mirror(brname, mirname).

get_mirror done. Shoule check if record(s) exists after calling
.fetech*.

Signed-off-by: Min Chen <minchnew@gmail.com>
Fix a bug with cur.fetchone.

cur.fetchone() might return None, which will cause an exception.

Signed-off-by: Min Chen <minchnew@gmail.com>