Remove unnecessary std::move

Unnecessary move prevents copy elision.
Pass unique/shared pointer parameters by reference

According to the upcoming coding style standard.
Remove noexcept from result and isSuccessful

Following the guidelines presented in N3279.
Merge pull request #57 from magicant/refactor/misc

Miscellaneous refactoring