Create output paths via async

This makes it possible to convert these calls into async.
Restructure project to use async patterns

This allows some further async work. Effectively this got rid of
blocking sync calls to FS which is a nice side benefit.
Move functions to appropriate modules
Sort albums by name

Previously they were ordered randomly.