Better song validation.

It’s also nice demonstration of React controlled components. It works
like masked input, for example song name and artists can’t start with
special symbol. It’s very good behaviour, because whole app state is
immediately projected into localStorage, and we don’t want store
invalid state.