Add error message when running commands on directories

Issue #446
diff --git a/buildstream/_exceptions.py b/buildstream/_exceptions.py
index 3aadd52..3779632 100644
--- a/buildstream/_exceptions.py
+++ b/buildstream/_exceptions.py
@@ -197,6 +197,9 @@
     # A project.conf file was missing
     MISSING_PROJECT_CONF = 17
 
+    # Try to load a directory not a yaml file
+    LOADING_DIRECTORY = 18
+
 
 # LoadError
 #
diff --git a/buildstream/_yaml.py b/buildstream/_yaml.py
index bfd6586..0033628 100644
--- a/buildstream/_yaml.py
+++ b/buildstream/_yaml.py
@@ -184,6 +184,10 @@
     except FileNotFoundError as e:
         raise LoadError(LoadErrorReason.MISSING_FILE,
                         "Could not find file at {}".format(filename)) from e
+    except IsADirectoryError as e:
+        raise LoadError(LoadErrorReason.LOADING_DIRECTORY,
+                        "{} is a directory. bst command is expecting a .bst file"
+                        .format(filename)) from e
 
 
 # Like load(), but doesnt require the data to be in a file
diff --git a/tests/loader/basics.py b/tests/loader/basics.py
index 008750f..3526697 100644
--- a/tests/loader/basics.py
+++ b/tests/loader/basics.py
@@ -84,3 +84,15 @@
         element = loader.load()[0]
 
     assert (exc.value.reason == LoadErrorReason.INVALID_DATA)
+
+
+@pytest.mark.datafiles(os.path.join(DATA_DIR, 'onefile'))
+def test_invalid_directory_load(datafiles):
+
+    basedir = os.path.join(datafiles.dirname, datafiles.basename)
+    loader = make_loader(basedir, ['elements/'])
+
+    with pytest.raises(LoadError) as exc:
+        element = loader.load()[0]
+
+    assert (exc.value.reason == LoadErrorReason.LOADING_DIRECTORY)