dvc add dir: file exist
First, take a look at #447 

If a directory was already added then I got an error message:
```
$ cp -r data/SO raw  # <-- from #447
$ rm data/SO
$ dvc add raw
Unexpected error: [Errno 17] File exists: '/Users/dmitry/src/myrepo_1/.dvc/cache/ee3887acb78d695e2ac68dc85e05e2a1'
```

Is it because a directory 

Also, two minor issues:
1. Full file path.
2. Should be "Directory was already added", not "File exists".

One more related error:

```
$ rm raw/Tags.xml
$ dvc add raw

Unexpected error: [Errno 17] File exists
```
diff --git a/dvc/output.py b/dvc/output.py
index 58034769d..f516085af 100644
--- a/dvc/output.py
+++ b/dvc/output.py
@@ -51,7 +51,7 @@ class Dependency(object):
         self.path = os.path.abspath(os.path.realpath(path))
 
         if not self.path.startswith(self.project.root_dir):
-            raise CmdOutputOutsideOfRepoError(self.path)
+            raise CmdOutputOutsideOfRepoError(self.rel_path)
 
         self.md5 = md5
 
diff --git a/dvc/project.py b/dvc/project.py
index 96f6c35de..8050cc30d 100644
--- a/dvc/project.py
+++ b/dvc/project.py
@@ -152,7 +152,7 @@ class Project(object):
             try:
                 result += self._reproduce_stage(stages, n, force)
             except Exception as ex:
-                raise ReproductionError(n, ex)
+                raise ReproductionError(stages[n].relpath, ex)
         return result
 
     def checkout(self):
diff --git a/dvc/stage.py b/dvc/stage.py
index 5eba993f1..e60a85a1d 100644
--- a/dvc/stage.py
+++ b/dvc/stage.py
@@ -9,7 +9,7 @@ from dvc.output import Output, Dependency, OutputError
 
 class StageCmdFailedError(DvcException):
     def __init__(self, stage):
-        msg = 'Stage {} cmd {} failed'.format(stage.path, stage.cmd)
+        msg = 'Stage {} cmd {} failed'.format(stage.relpath, stage.cmd)
         super(StageCmdFailedError, self).__init__(msg)
 
 
['dvc/project.py', 'dvc/stage.py', 'dvc/output.py']