StringUtils::Tokenize: clarify, simplify and optimize
1. pos must be string::npos when lastPos=string::npos, so no need to check pos != string::npos in the while condition. A != a || B != b = !(A==a && B==b) = !(B==b) = B != b
2. as pos needn't be in the condition, it mayaswell be in the while loop.
3. rename variables to reflect what they do.
[videodb] remove unused CVideoInfoTag::m_strShowPath
[cosmetics] indenting
[videodb] no need to set empty scraper/content when adding a path (they're empty anyway)
[videodb] adds ClearBookMarksOfFile taking idFile rather than path
[videodb] adds GetDbId() wrapper of GetSingleValue() for returning integer values (or -1 if not found)
[videodb] DeleteMovie/MusicVideo/Episode should primarily take database id, not path
[videodb] DeleteTvShow/DeleteDetailsForTvShow should take a database id, not a path
[videodb] use tvshowview.strPath rather than path.strPath in the seasons query - it already contains the path
[videodb] adds idParentPath to the path table, linking to the id (if available) of the parent
[videodb] drops parent path id and basePath from tvshow table
[videodb] factor out the addition of paths to the tvshow link table
[videodb] add paths to show separately from adding the tvshow row, so that multiple paths can later be added.
[videodb] search for existing tvshows that match rather than adding a duplicate when adding the same show with a different path
[videodb] remove duplicate tvshow rows in favour of multiple links in tvshowlinkpath
[videodb] if we have multiple links from tvshow to path, we need to be careful with the grouping in the tvshowview.
[videodb] drop GetStackedTvShowList and Stack as they're no longer required
[videoinfo] we don't need a path to delete a video item from the database - only to invalidate the path
[multipath] add std::string version of CMultiPathDirectory::GetPaths()
[videodb] refactor SetDetailsForTvShow into Set/UpdateDetailsForTvShow