Update how artifacts work
This pull request **introduces 1 alert** when merging cd8a56e9ff9ad495a6c805e6b703e668423dae02 into 6ce670b7ab3ab5c84ce388fa1968748cd859b8f8 - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-b1aeb4e49c3b999fff107cf21c3f4ba261ec6d4b)

**new alerts:**

* 1 for Unused import This pull request **introduces 1 alert** when merging a009c16ca9faf3aa2aa8c7cb27301b4d581e5d1a into 6ce670b7ab3ab5c84ce388fa1968748cd859b8f8 - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-fd64477993aa0151a630a3215b8d35de1f50f48d)

**new alerts:**

* 1 for Unused import This pull request **introduces 1 alert** when merging 22264c921b18de3945432d9970950c28b239f32f into 12a7e66dc90c5a604477ecb1ce37fee7320ba70b - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-b099a3f2a34a2066bb904c80849e7dde6ae33973)

**new alerts:**

* 1 for Unused import This pull request **introduces 1 alert** when merging ab856a5f00b6c6a6524f15f06f0ea20c1b9368b7 into 12a7e66dc90c5a604477ecb1ce37fee7320ba70b - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-ca3097e9bec68ebd375812cd13a46fa967102779)

**new alerts:**

* 1 for Unused import This pull request **introduces 4 alerts** when merging 3d6ada0e8cac06f5619e8c4c2009c65e17b92213 into ddd6f713e2e8f99f4a2db38c832db62da3663cf6 - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-9ead88a03c90672294deb0a869c01683ad11b626)

**new alerts:**

* 3 for Unused import
* 1 for Unused local variable This pull request **introduces 4 alerts** when merging 741b323471a56de35c2d14a8135d876c0d2f03c7 into ddd6f713e2e8f99f4a2db38c832db62da3663cf6 - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-df3cec773bf3d17d79fc5212e85c70a9a7c24099)

**new alerts:**

* 3 for Unused import
* 1 for Unused local variable This pull request **introduces 4 alerts** when merging c414fb36307b143e319f1119a4770725fb457b9b into 855ce265b80c0dc40f4f06ece76d2c9d6ca1be8d - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-a49c30f91df851f565530657a1205dfb5cbcbe7c)

**new alerts:**

* 3 for Unused import
* 1 for Unused local variable This pull request **introduces 4 alerts** when merging 2e1689d33c361eee20d88a9955324310f0a197eb into 26e5d3a9b3cc934db0004b1dd9263fb7bce9a964 - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-dd66337a10954c0217d81961803c39792000dd6a)

**new alerts:**

* 3 for Unused import
* 1 for Unused local variable This pull request **introduces 4 alerts** when merging b48c44310ec824748546ebf88e6b92ec37932ed5 into 26e5d3a9b3cc934db0004b1dd9263fb7bce9a964 - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-a5abf057be3effd4c07355e872016cd99a79c00e)

**new alerts:**

* 3 for Unused import
* 1 for Unused local variable This pull request **introduces 4 alerts** when merging fff94a1d68210c490b64bcfebd6db9662ca7ac71 into 26e5d3a9b3cc934db0004b1dd9263fb7bce9a964 - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-b25da8a6ee68b390fe1b8f5b4512963d4a4ac0b6)

**new alerts:**

* 3 for Unused import
* 1 for Unused local variable @titu1994 and @ericharper are we good to merge this? Yes looks good to me.  This pull request **introduces 4 alerts** when merging 1ff4224c5f6ed2746751a80a83a0c803112424ce into 5316f2bcd0e326d336cb35bd8222b00914a5b77f - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-614689133bc7c6f15d9f593c50fb443f9cf53fa4)

**new alerts:**

* 3 for Unused import
* 1 for Unused local variable
This PR changes the following:

* how register_artifacts work
* how save_to works

The usage of both register_artifacts and save_to method remains identical.
Key differences in behaiviour:
* register_artifacts always guarantees to return existing path to artifact at the time of call. 
* save_to will replace and hash artifact names in config file before creating .nemo file. This is necessary to prevent name collisions
* when restoring artifacts from .nemo file it will create a temporary folder with artifacts for the lifetime of a model
* temporary folders associated with the model get deleted by destructor


TODOs:

* Some unittests fail
* Model parallel save_to (?)
