Change Element.getProperty and Element.removeProperty to avoid casting in client code.

Changing the signatures to:
```java
public <T> T getProperty(String key);
public <T> T removeProperty(String key);
```
Means that clients can write code like this:
```java
String test = v.getProperty("testProp");
```
Implementations of Element don't have to update their code, but probably should in the long run. e.g. The following will cause a compile error if TitanVertex is not updated:

```java
TitanVertex tv = (TitanVertex) v;
String test2 = tv.getProperty("testProp"); //Type mismatch
```