A path that has no drawing operations or only a move operation causes
problems with the path offset code.
This will cause Path.clean() to return false in such a case, which in
turn will cause Path.__asPath() to return false when called from the
offset code.
We check this return value in the offset code and do not push this
segment to the offsetted path.
This fixes#3038
This closes#3056