Implementation of #708.
#708 Changed the behavior of source. It can manage to accept empty string.
Merge remote-tracking branch 'origin' into inasafe-708
Merge #708 to master.