lightnvm: cleanup nvm_init (error handling and stackframe)

nvm_init allocated a 4KB struct on the stack, triggering a
compile-time warning (-Wframe-larger-than) - now the struct is
allocated on the heap to avoid this.

nvm_init's error-handling was changed to accommodate the new
allocation and handle one fault which would trigger a memory-leak
while others would return the wrong error code (-ENOMEM).