Check empty source when adding claim

fix the rspec cases and add checking for the source when adding claim
###1. it correctly validates when adding a claim
```ruby
source_card = subcards["+source"]||subcards["+Source"]
```
gives the source card

```ruby
source_card||=fetch( :trait=>:source ) if real?
```
does nth as it is not real

```ruby
if !real? or (!source_card or source_card.type_id != Card::SearchTypeID )
```
be true as it is real and go to ```check_source```

###2 it correctly validates when editing a claim with +source

```ruby
source_card = subcards["+source"]||subcards["+Source"]
```
gives the source card

```ruby
source_card||=fetch( :trait=>:source ) if real?
```
does nth as source_card is not null

```ruby
if !real? or (!source_card or source_card.type_id != Card::SearchTypeID )
```
be true as source_card isnt null and type is not searchtype and go to ```check_source```



###3. it doesn't break anything when editing a claim without +source (eg renaming)
(for some cases, if users delete the content in other places, and try to save a claim, this could alert users as well)
```ruby
source_card = subcards["+source"]||subcards["+Source"]
```
gives nth

```ruby
source_card||=fetch( :trait=>:source ) if real?
```
gives the source card, but in renaming, it returns something like ```<Card###2232964880[search_type:30]([card name]){new:virtual:I:nil}>```
which is in SearchType

```ruby
if !real? or (!source_card or source_card.type_id != Card::SearchTypeID )
```
For renaming, 
be true as source_card isn't null and type is SearchType. The ```check_source``` is skipped.

For editing a claim without +source except renaming, 
be true as source_card isn't null and type is not SearchType and go to ```check_source```