Correct logic in save_csvimport

This is a speculative fix, since I'm unsure exactly what is expected to happen.
If |instance| is None, we create a new CSVImport, move the properties to |instance|,
and then save it. When used as a management command, however, |instance| is not None,
so we run into an exception when we try to save it.

It seems like prior testing never hit this code path, so reverse the logic and
bail out if |instance| is set.
Add infolist for debugging

Allow for more debug output through an infolist, and leave loglist to be just errors.
The existence of lines in loglist ends up causing save_csvimport to be called, since
the errors would have prevented the import from completing. So, leave loglist alone.
Add finally block to run()

Wrap most of run() inside a try..finally block, to ensure that the loglist gets
purged regardless of whether that row's import failed or was skipped. Also, change
the test for logger based on an existence check.

One of the logger checks is unnecessary, since we just don't output what's in infolist
if no logger instance exists.

Also add logging if a duplicate was found, and the row was skipped.
Add many-to-many field support

Maintain a new |m2m_fields| mapping. After the new row is saved as an object,
then associate the foreign keys. Many-to-many fields are excluded from the evaluation
of whether a duplicate instance already exists.